Unterminierte Zeichenfolge in Dollar-Anführungszeichen: Fehler mit Semikolons beheben
Im Zusammenhang mit der Erstellung einer PostgreSQL-Funktion mit Goose befasst sich dieser Artikel mit einem Fehler Wird beim Verarbeiten einer komplexen Anweisung innerhalb des Funktionskörpers angetroffen. Der von der pq-Bibliothek gemeldete Fehler weist darauf hin, dass eine Zeichenfolge in Dollar-Anführungszeichen nicht abgeschlossen ist.
Um dieses Problem zu beheben, beachten Sie, dass komplexe Anweisungen mit Semikolons eine Annotation mit „--goose StatementBegin“ und „--goose“ erfordern StatementEnd"-Anmerkungen gemäß der Goose-Dokumentation. Diese Anmerkungen unterstützen Goose bei der Verwaltung eingebetteter Semikolons in SQL-Anweisungen und verhindern so libpq-Fehler.
Durch Anwenden dieser Anmerkungen auf das bereitgestellte Codebeispiel wird der Fehler behoben:
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;
Das obige ist der detaillierte Inhalt vonWie behebe ich „Unterminated Dollar-Quoted String'-Fehler in PostgreSQL-Funktionen mit Goose?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!