我正在尝试使用 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
. 不过,这不是这里发生的事情。
当脚本中存在 SQL 语法错误时,DBeaver 也会给出此错误。在我的情况下,这是一个选择计算列中的一对不匹配的括号。