gpt4 book ai didi

sql - SQuirreL : unterminated dollar-quoted string 中的 PostgreSQL 函数定义

转载 作者:行者123 更新时间:2023-11-29 11:14:52 24 4
gpt4 key购买 nike

我对 PostgreSQL 9.3.4 数据库有以下函数定义:

CREATE OR REPLACE FUNCTION update_modified_timestamp()  
RETURNS TRIGGER AS $$
BEGIN
NEW.modified_at = now();
RETURN NEW;
END;
$$ LANGUAGE plpgsql;

当我尝试在 SQuirreL(3.5.3 或 3.6)中执行此操作时,出现以下错误:

Error: ERROR: unterminated dollar-quoted string at or near "$$
BEGIN
NEW.modified_at = now()"
Position: 77
SQLState: 42601
ErrorCode: 0

到目前为止,我已经了解了这个 can be mitigated by using single quotes像这样分隔函数体:

CREATE OR REPLACE FUNCTION update_modified_timestamp()  
RETURNS TRIGGER AS '
BEGIN
NEW.modified_at = now();
RETURN NEW;
END;
' LANGUAGE plpgsql;

我仍然想知道这是否不能通过其他方式解决 - 我认为这一定是可能的,因为 Flyway可以执行此脚本,它使用在 SQuirreL 中配置的完全相同的 JDBC 驱动程序。


更新: @a_horse_with_no_name 指出这个错误与 JDBC 驱动程序无关,而是与 SQuirreL 如何解析 SQL 语句并将其拆分成 block 再发送它们有关到数据库。因此,剩下的问题是:SQuirreL 可以发送原始/未解析的查询吗?我搜索了很多都找不到这样做的方法。

最佳答案

您可以更改语句分隔符,这样语句就不会在 ; 上拆分:

转到: session session 属性SQL语句分隔符

即使您不能将其更改为空字符串,您也可以将其更改为例如//,这将允许执行问题中的语句。

关于sql - SQuirreL : unterminated dollar-quoted string 中的 PostgreSQL 函数定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30211053/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com