2013-05-10 5 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

ответ

0

Если я понял, ваш тип возврата - number, поэтому вы можете использовать напрямую Sql.NUMERIC.

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