5

我正在尝试使用 DBeaver 声明一些变量并不断遇到此错误。

Unterminated dollar-quoted string at or near "$$

 DO $$
 DECLARE A integer; B integer;

BEGIN   
END$$;

有任何想法吗?

4

4 回答 4

5

DBeaver 是问题所在。切换到 PGAdmin 并没有更多问题。

于 2015-09-21T15:13:05.513 回答
3

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

于 2019-08-30T15:30:51.263 回答
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. 不过,这不是这里发生的事情。

于 2015-09-18T04:18:43.350 回答
0

当脚本中存在 SQL 语法错误时,DBeaver 也会给出此错误。在我的情况下,这是一个选择计算列中的一对不匹配的括号。

于 2020-02-11T04:22:43.187 回答