2013-07-24 36 views
0

我的postgresql数据库上有一个存储过程,它返回整数值。当我使用CallableStatement调用我的过程窗体jdbc客户端时,当我调用CallableStatement对象的execute()方法时,它只返回一个布尔值。我如何读取函数的有效返回值?JDBC:检查存储过程的返回值

回答

2

您需要通过得到一个结果:

ResultSet rs = stmt.executeQuery("SELECT * FROM setoffunc()"); 
while (rs.next()) { 
    // read results 
} 
rs.close(); 
stmt.close(); 

或者:

// Procedure call. 
CallableStatement proc = conn.prepareCall("{ ? = call refcursorfunc() }"); 
proc.registerOutParameter(1, Types.OTHER); 
proc.execute(); 
ResultSet results = (ResultSet) proc.getObject(1); 
while (results.next()) { 
    // read results 
} 
results.close(); 
proc.close(); 

详情请参见文档:http://jdbc.postgresql.org/documentation/80/callproc.html

+2

在我的情况下不需要的结果集,我的函数返回只有一个整数。只有在执行后调用proc.getInt(1)并将registerOutParameter第二个参数更改为Types.INTEGER – giozh