【发布时间】:2018-11-29 07:09:25
【问题描述】:
我必须在 PLPGSQL 中编写一个函数,但我对用美元引用引用的函数体有疑问。使用第一个教程:
CREATE FUNCTION inc(val integer)
RETURNS integer AS
$BODY$
BEGIN
RETURN val + 1;
END;
$BODY$
LANGUAGE PLPGSQL;
我收到一个错误:
$$ 或附近的未终止的美元引号字符串
在谷歌上搜索我发现这是一个 JDBC 驱动程序问题,但我无法更新它。
所以我尝试将DELIMITER 更改为删除$$:
DELIMITER ++;
CREATE FUNCTION inc(val integer)
RETURNS integer AS
++BODY++
BEGIN
RETURN val + 1;
END;
++BODY++
LANGUAGE PLPGSQL;
DELIMITER ;
该命令没有返回任何错误,但当我尝试调用它时函数不存在:
select inc(4);
我错过了什么?
【问题讨论】:
-
您的 SQL 客户端似乎无法处理美元报价。您使用的是哪个 SQL 客户端? (并且“美元引号”不是分隔符,它们是writing a string constant 的替代方式)
-
JDBC 是从哪里来的?
-
我正在使用 HeidiSQL
-
这肯定是您的客户没有处理
$标志的问题。你的函数看起来不错。 -
用 pgAdmin 试过了,效果很好。
标签: postgresql jdbc plpgsql quotes