未被美元引用的字符串在“$$”或附近

时间:2015-09-17 15:33:12

标签: sql postgresql dbeaver

我正在尝试使用DBeaver声明一些变量并继续发出此错误。

Unterminated dollar-quoted string at or near "$$

 DO $$
 DECLARE A integer; B integer;

BEGIN   
END$$;

有什么想法吗?

4 个答案:

答案 0 :(得分:2)

DBeaver是个问题。切换到PGAdmin,没有更多问题。

答案 1 :(得分:1)

从DBeaver 6开始,您可以使用ALT-X(在Windows上)执行脚本,该脚本不会尝试进行涉及美元符号的变量捕获/插值。

答案 2 :(得分:0)

发布的语法很好。您的问题是客户端应用程序或驱动程序正在破坏查询,可能是因为它不理解美元引用。

可能正在尝试将其拆分为分号的单独语句,运行:

  • 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}}。但这并不是这里发生的事情。

答案 3 :(得分:0)

当脚本中存在SQL语法错误时,

DBeaver也给出此错误。 就我而言,这是在选择的计算列中一对不匹配的括号。