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!