Postgresql JDBC的美元报价失败

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

我必须用PLPGSQL编写一个函数,但我对函数体使用美元报价有问题。使用第一个教程:

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进行了尝试,效果良好。