Maison  >  Article  >  développement back-end  >  Comment résoudre les erreurs « Chaîne non terminée en dollars cités » dans les fonctions PostgreSQL avec Goose ?

Comment résoudre les erreurs « Chaîne non terminée en dollars cités » dans les fonctions PostgreSQL avec Goose ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-02 15:10:03163parcourir

How to Resolve

Chaîne interminée citée 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 citée en dollars reste interminée.

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 incorporé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;

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn