2013-05-10 62 views
0

我之前成功调用过存储过程,但没有输出参数,现在有了这样的新过程。Grails调用带输出参数的存储过程

var returntype number; 
begin 
IZMST_PKG_SOLO_GENERATE_SQL.pro_get_row_cnt(1,181,:returntype); 
end; 

当我把这个过程遇到老乡错误消息: 错误

org.apache.commons.dbcp.DelegatingCallableStatement with address: 
    "[email protected]" is 
    closed.. Stacktrace follows: java.sql.SQLException: 
    org.apache.commons.dbcp.DelegatingCallableStatement with address: 
    "[email protected]" is 
    closed.  at 
    org.apache.commons.dbcp.DelegatingStatement.checkOpen(DelegatingStatement.java:137) 
     at 
org.apache.commons.dbcp.DelegatingCallableStatement.getObject(DelegatingCallableStatement.java:144) 
    at 
com.pg.izoom.de.ExtractManagementController$$EO5PWcUR.addExtract(ExtractManagementController.groovy:74) 
    at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:662) 

这样的代码:

Connection conn = dataSource.getConnection() 
      Sql sql = new Sql(conn) 
      //int test = sql.call("",) 
      sql.call'BEGIN IZMST_PKG_SOLO_GENERATE_SQL.pro_get_row_cnt(?,?,?); END;',[1L,qryId,Sql.resultSet(OracleTypes.NUMBER)],{dwells-> 
       println dwells 
      } 

谁能熟悉这个帮助我吗?提前致谢。

+0

您需要添加过程声明 - 从您发布什么样的参数'returntype'是不明确的。另外,你可以修改程序来返回值吗? – haki 2013-05-10 06:53:17

回答

0

如果我明白了,您的退货类型为number,那么您可以直接使用Sql.NUMERIC

sql.call '{call IZMST_PKG_SOLO_GENERATE_SQL.pro_get_row_cnt(?,?,?) }',[1L, qryId, Sql.NUMERIC],{ dwells -> 
    println dwells 
} 
相关问题