2011-02-14 117 views
0

我需要一些幫助來調用Groovy中的Oracle存儲過程並通過輸出參數接收ResultSet。 我可以用其他數據類型的輸出參數調用存儲過程,但對於CURSOR,我找不到方法。使用OUT參數無法調用pl-sql存儲過程參數oracletypes.cursor

「我總是得到錯誤 」java.sql.SQLException中:關閉遊標「 參數(波紋管)是:」 Sql.out(OracleTypes.CURSOR),// LISTA德possiveis VARIOS項目一個consumir

下面我的代碼(連接已經openI

def consumeProvisioning(Sql sql) { 

int nRes 

sql.call("{call Provisioning.ConsumirAprovisionamento(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}", 
[ 
Sql.out(Sql.INTEGER.type), // quantidade possivel de consumir 
new java.sql.Date(2012,1,1), // Data Para Validação 
'testclient0000001', // IDCliente 
'*', // IDCatalogo 
'*', // Titulo 
'*', // IDObjecto 
'*', // IDAcervo 
'*', // Autor 
'*', // Origem 
'*', // ZonaGeo 
'FOTO', // Tipo Conteudo  
'*', // Canal 
'*', // Context 
'*', // URLString 
1, // Quantidade a consumir 
'UNI', // Unidade do Stock 
new java.sql.Date(2011,1,1), // Data Conteudo 
1, // Mes 
1, // Dia 
1, // Hora 
1, // Minuto 
'GLOBAL_IMAGEM', // Site client 
1, // ScopeID 
'[email protected]', //UserID 
null, // Tag 
null, // Metadado 
'*', // FOTO FORMATO 
'*', // FOTO QUALIDADE 
null, // Video Formato 
null, // Video Qualidade 
null, // Som Formato 
null, // Som Qualidade 
null, // Artigo Formato 
null, //IDProvisioningMaster 
null, // Data de validade a colocar no consumo inline. Normalmente vai a null, pois o provisioning encarrega-se de verificar qual a mais adequada 
new java.sql.Date(2011,12,31), // CriadoEm 
'josecruz', // CriadoPor 
new java.sql.Date(2011, 12, 31), // ActualizadoEm 
'josecruz', // ActualizadoPor 
Sql.out(OracleTypes.CURSOR), // lista de possiveis varios items a consumir 
'FOTO2CONSUME1' // ID do objecto a consumir 
]) {param1, param2 -> nRes = param1} 

nRes 

} 

感謝! 何塞·克魯茲

回答

1

在你調用數據庫的程序,光標OUT p參數需要是REF CURSOR,而不是普通的光標。