Незавершенная строка в долларовых кавычках: устранение ошибок с помощью точек с запятой
В контексте создания функции PostgreSQL с помощью Goose в этой статье рассматривается ошибка встречается при обработке сложного оператора в теле функции. Ошибка, о которой сообщает библиотека pq, указывает на то, что строка в долларовых кавычках остается незавершенной.
Чтобы решить эту проблему, обратите внимание, что сложные операторы, содержащие точки с запятой, требуют аннотации с использованием "-- goose StatementBegin" и "-- goose StatementEnd», согласно документации Goose. Эти аннотации помогают Goose управлять встроенными точками с запятой в операторах SQL, предотвращая ошибки libpq.
Применение этих аннотаций к предоставленному образцу кода устраняет ошибку:
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;
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3