簡體   English   中英

Grails 調用帶有輸出參數的存儲過程

[英]Grails call stored procedure with output parameter

如何在 grails 中使用參數調用 Oracle 過程,produre 如下所示,

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

我曾嘗試調用此過程,但程序遇到錯誤,您可以查看以下錯誤消息。

org.apache.commons.dbcp.DelegatingCallableStatement with address:
    "oracle.jdbc.driver.OracleCallableStatementWrapper@52d0d407" is
    closed.. Stacktrace follows: java.sql.SQLException:
    org.apache.commons.dbcp.DelegatingCallableStatement with address:
    "oracle.jdbc.driver.OracleCallableStatementWrapper@52d0d407" 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
            }

PS:這個問題已經解決了,更新一下描述,讓這個問題更容易理解。

如果我理解,您的返回類型是number ,因此您可以直接使用Sql.NUMERIC

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM