Postgresql JDBC的美元报价失败
我必须用PLPGSQL编写一个函数,但我对函数体使用美元报价有问题。使用第一个教程:Postgresql JDBC的美元报价失败,postgresql,jdbc,plpgsql,quotes,Postgresql,Jdbc,Plpgsql,Quotes,我必须用PLPGSQL编写一个函数,但我对函数体使用美元报价有问题。使用第一个教程: CREATE FUNCTION inc(val integer) RETURNS integer AS $BODY$ BEGIN RETURN val + 1; END; $BODY$ LANGUAGE PLPGSQL; 我得到一个错误: 位于或接近的未终止美元报价字符串$$ 在google上搜索时,我发现这是一个JDBC驱动程序问题,但我无法更新它。 因此,我尝试更改分隔符以删除$$: DEL
CREATE FUNCTION inc(val integer)
RETURNS integer AS
$BODY$
BEGIN
RETURN val + 1;
END;
$BODY$
LANGUAGE PLPGSQL;
我得到一个错误:
位于或接近的未终止美元报价字符串$$
在google上搜索时,我发现这是一个JDBC驱动程序问题,但我无法更新它。
因此,我尝试更改分隔符以删除$$
:
DELIMITER ++;
CREATE FUNCTION inc(val integer)
RETURNS integer AS
++BODY++
BEGIN
RETURN val + 1;
END;
++BODY++
LANGUAGE PLPGSQL;
DELIMITER ;
当我尝试调用该命令时,该命令不会返回任何错误,但函数不存在:
select inc(4);
我遗漏了什么?根本问题是JDBC无法处理美元报价。
我想这是我的错
见:
对于简单的情况,可以使用纯引号来避免此问题:
CREATE FUNCTION inc(val integer)
RETURNS integer AS
'
BEGIN
RETURN val + 1;
END
' LANGUAGE plpgsql;
见:
您的SQL客户端似乎无法处理美元报价。您正在使用哪个SQL客户机?(而且“美元报价”不是分隔符,它们是另一种方式)JDBC在这里的作用是什么?我使用Heidisql这肯定是您的客户不处理$
符号的问题。您的函数看起来很好。使用pgAdmin进行了尝试,效果良好。