0

grails でパラメーターを使用して Oracle プロシージャーを呼び出す方法、プロシージャーは次のようになります。

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: この問題は解決されました。説明を更新して、この質問を理解しやすくしてください。

4

1 に答える 1

0

私が理解した場合、あなたの戻り値の型はnumberであるため、直接使用できますSql.NUMERIC

sql.call '{call IZMST_PKG_SOLO_GENERATE_SQL.pro_get_row_cnt(?,?,?) }',[1L, qryId, Sql.NUMERIC],{ dwells -> 
  println dwells
}
于 2013-05-10T11:43:30.073 に答える