Chaîne non terminée avec guillemets en dollars : résolution des erreurs avec des points-virgules
Dans le contexte de la création d'une fonction PostgreSQL avec Goose, cet article corrige une erreur rencontré lors du traitement d’une instruction complexe dans le corps de la fonction. L'erreur, signalée par la bibliothèque pq, indique qu'une chaîne entre guillemets en dollars reste interminable.
Pour résoudre ce problème, notez que les instructions complexes comportant des points-virgules nécessitent une annotation à l'aide de "-- goose StatementBegin" et "-- goose Annotations StatementEnd", selon la documentation Goose. Ces annotations aident Goose à gérer les points-virgules intégrés dans les instructions SQL, évitant ainsi les erreurs libpq.
L'application de ces annotations à l'exemple de code fourni résout l'erreur :
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;
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3