Неопределенная строка в кавычках в долларах или около $$

Я пытаюсь объявить некоторые переменные с помощью 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. В моем случае это была пара несовпадающих скобок в выбранном вычисляемом столбце.

Другие вопросы по тегам