Неопределенная строка в кавычках в долларах или около $$
Я пытаюсь объявить некоторые переменные с помощью DBeaver и продолжаю нажимать эту ошибку.
Unterminated dollar-quoted string at or near "$$
DO $$
DECLARE A integer; B integer;
BEGIN
END$$;
Есть идеи?
2 ответа
DBeaver был проблемой. Перешел на PGAdmin и проблем больше нет.
Начиная с DBeaver 6, вы можете выполнять сценарий с помощью ALT-X (в Windows), который не пытается выполнять захват / интерполяцию переменных с использованием знаков доллара.
Синтаксис размещен в порядке. Ваша проблема в том, что клиентское приложение или драйвер искажают запрос, возможно, потому, что он не понимает цитирование в долларах.
Возможно, он пытается разделить его на отдельные операторы в точках с запятой, запустив:
DO $$ DECLARE A integer;
B integer;
BEGIN END$$;
как три отдельных заявления. Это приведет к сообщенной ошибке, например
$ psql -c 'DO $$ DECLARE A integer;'
ERROR: unterminated dollar-quoted string at or near "$$ DECLARE A integer;"
LINE 1: DO $$ DECLARE A integer;
^
Вот почему вы должны указать свой клиентский драйвер / приложение, задавая вопросы.
Другая возможность для некоторых клиентов заключается в том, что $
как экранированный заполнитель параметра запроса и замените его одним $
или попробуйте заменить его заполнителем на стороне сервера, например $1
, Это не то, что здесь происходит, хотя.
DBeaver также выдает эту ошибку, когда в сценарии есть синтаксическая ошибка SQL. В моем случае это была пара несовпадающих скобок в выбранном вычисляемом столбце.