Maison  >  Article  >  développement back-end  >  Comment résoudre l'erreur de chaîne non terminée citée en dollars lors de la création de fonctions PostgreSQL dans Goose ?

Comment résoudre l'erreur de chaîne non terminée citée en dollars lors de la création de fonctions PostgreSQL dans Goose ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-02 16:09:29622parcourir

How to Resolve the Unterminated Dollar-Quoted String Error When Creating PostgreSQL Functions in Goose?

Erreur de chaîne non terminée citée en dollars dans Goose : résolution des problèmes de création de fonctions PostgreSQL

Lorsque vous essayez de créer une fonction dans PostgreSQL à l'aide de Goose, vous peut rencontrer une erreur liée à une chaîne non terminée entre guillemets en dollars. Cette erreur est généralement déclenchée lorsque l'instruction SQL de la fonction contient des points-virgules qui divisent la chaîne.

Pour résoudre ce problème, les utilisateurs de Goose doivent annoter ces instructions complexes avec -- goose StatementBegin et -- goose StatementEnd. Ces annotations séparent l'instruction en morceaux plus petits, permettant à Goose de la traiter correctement.

Dans votre cas spécifique, le code contient des points-virgules dans les instructions UPDATE et INSERT. Par conséquent, le code annoté devrait apparaître comme suit :

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;
-- +goose StatementEnd
    IF found THEN
        RETURN;
    END IF;
-- +goose StatementBegin
    BEGIN
        INSERT INTO userslocations(userid,locationid, count) VALUES (user_id, location_id, 1);
        RETURN;
    EXCEPTION WHEN unique_violation THEN
-- +goose StatementEnd
    END;
    END LOOP;
END;
$BODY$
LANGUAGE plpgsql;

Une fois ces annotations ajoutées, Goose sera en mesure de traiter correctement l'instruction SQL et de créer la fonction sans rencontrer l'erreur de chaîne non terminée. N'oubliez pas que si vos instructions contiennent des points-virgules intégrés, il est crucial d'ajouter ces annotations pour garantir la compatibilité avec Goose et la bibliothèque pq.

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