«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как устранить ошибки «Незавершенная строка в долларовых кавычках» в функциях PostgreSQL с помощью Goose?

Как устранить ошибки «Незавершенная строка в долларовых кавычках» в функциях PostgreSQL с помощью Goose?

Опубликовано 17 ноября 2024 г.
Просматривать:918

How to Resolve \

Незавершенная строка в долларовых кавычках: устранение ошибок с помощью точек с запятой

В контексте создания функции 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