Unterminierte Zeichenfolge in Dollar-Anführungszeichen: Fehler mit Semikolons beheben
Im Zusammenhang mit der Erstellung einer PostgreSQL-Funktion mit Goose behandelt dieser Artikel einen 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 Annotationen unterstützen Goose bei der Verwaltung eingebetteter Semikolons in SQL-Anweisungen und verhindern so libpq-Fehler.
Durch Anwenden dieser Annotationen 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;
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3