"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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 ?

Publié le 2024-11-17
Parcourir:751

How to Resolve \

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;
Dernier tutoriel Plus>

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