【发布时间】:2013-01-05 09:46:50
【问题描述】:
从 postgresql 的文档中我发现:
con.setAutoCommit(false);
过程调用。
CallableStatement proc = con.prepareCall("{ ? = call doquery ( ? ) }");
proc.registerOutParameter(1, Types.Other);
proc.setInt(2, -1);
proc.execute();
ResultSet results = (ResultSet) proc.getObject(1);
参考here
虽然,我试图创建一个过程,就像
CREATE OR REPLACE FUNCTION PSSQLPRC(pA IN VARCHAR,pB IN NUMERIC,PC OUT NUMERIC)
RETURNS NUMERIC
AS $$<br> begin
... ...
end;
$$ Language PLPGSQL;
使用java调用postgresql过程如下
CallableStatement proc = con.prepareCall("{ ? = call PSSQLPRC(?,?,?) }");
proc.registerOutParameter(1, Types.NUMERIC);
proc.setString(2,"abc");
proc.setInt(3,10);
proc.registerOutParameter(4, Types.NUMERIC);
proc.execute();
当 CallableStatement 的对象执行时,会发生错误。我能做些什么来解决这个错误?上述陈述是否正确?
【问题讨论】:
-
当我调试它时,sql语句更改为 select * from PSSQLPRC ('null','abc', '10', 'null') as result语句,它找不到具有四个参数的 PSSQLPRC...非常感谢!
-
sql 语句更改为 select * from PSSQLPRC ('null','abc', '10', 'null') as result in the statement(CallableStatement's object) ...
-
如果你想传递
null,不要用单引号括起来。'null'是字符文字,null是空值。 -
你好,我的担心是找不到四参数的过程,我在PSSQL中定义了三参数的过程...非常感谢!
标签: java postgresql call procedure