終端されていないドル引用符付き文字列: セミコロンによるエラーの解決
この記事では、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;
以上がGoose を使用して PostgreSQL 関数の「Unterminated Dollar-Quoted String」エラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。