Я пытаюсь объявить некоторые переменные с помощью DBeaver и продолжаю сталкиваться с этой ошибкой.
Unterminated dollar-quoted string at or near "$$
DO $$
DECLARE A integer; B integer;
BEGIN
END$$;
Любые идеи?
Я пытаюсь объявить некоторые переменные с помощью DBeaver и продолжаю сталкиваться с этой ошибкой.
Unterminated dollar-quoted string at or near "$$
DO $$
DECLARE A integer; B integer;
BEGIN
END$$;
Любые идеи?
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. В моем случае это была пара несовпадающих скобок в выбранном вычисляемом столбце.