【问题标题】:Unterminated dollar-quoted string at or near "$$"$$ 处或附近未终止的美元引号字符串
【发布时间】:2015-12-14 13:32:20
【问题描述】:

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

Unterminated dollar-quoted string at or near "$$

 DO $$
 DECLARE A integer; B integer;

BEGIN   
END$$;

有什么想法吗?

【问题讨论】:

标签: sql postgresql dbeaver dollar-quoting


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 根据编辑器中的图标,alt+x 执行整个脚本。这是更简单的解决方案,但您也可以突出显示整个查询并执行单个语句,它不会给出任何错误。
    【解决方案3】:

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

    它可能试图将其拆分为分号上的单独语句,运行:

    • 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。不过,这不是这里发生的事情。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-06-14
        • 1970-01-01
        • 2013-09-26
        • 1970-01-01
        • 2019-04-13
        • 2011-03-30
        • 1970-01-01
        相关资源
        最近更新 更多