未终止的美元引用字符串:用分号解决错误
在使用 Goose 创建 PostgreSQL 函数的上下文中,本文解决了一个错误在处理函数体内的复杂语句时遇到。 pq 库报告的错误表明美元引用的字符串仍未终止。
要解决此问题,请注意以分号为特征的复杂语句需要使用“-- goose StatementBegin”和“-- goose”进行注释StatementEnd”注释,根据 Goose 文档。这些注释可帮助 Goose 管理 SQL 语句中的嵌入式分号,防止 libpq 错误。
将这些注释应用于提供的代码示例可解决错误:
CREATE OR REPLACE FUNCTION add_userlocation(user_id INT, location_id INT) RETURNS VOID AS $BODY$ -- goose StatementBegin BEGIN LOOP UPDATE userslocations SET count = count 1 WHERE userid = user_id AND locationid = location_id; IF found THEN RETURN; END IF; BEGIN INSERT INTO userslocations(userid,locationid, count) VALUES (user_id, location_id, 1); RETURN; EXCEPTION WHEN unique_violation THEN END; END LOOP; -- goose StatementEnd END; $BODY$ LANGUAGE plpgsql;
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3