无法使用OUT参数oracletypes.cursor调用pl-sql存储过程 [英] Cant call pl-sql stored procedure with OUT Parameter oracletypes.cursor

查看:429
本文介绍了无法使用OUT参数oracletypes.cursor调用pl-sql存储过程的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要一些帮助来在Groovy中调用Oracle存储过程,并通过输出参数接收ResultSet。
我可以使用其他数据类型的输出参数调用存储过程,但是对于CURSOR,我找不到方法。

我总是收到错误 java.sql.SQLException:Cursor is closed。
参数(波纹)是: Sql.out(OracleTypes.CURSOR),//列表中的varios项目一个consumir



在我的代码下面(连接已经打开)

  def consumeProvisioning Sql sql){

int nRes

sql.call({call Provisioning.ConsumirAprovisionamento(?,?,?,?,?,?,?,? ,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,? ,?,?,?,?,?,?,?)},
[
Sql.out(Sql.INTEGER.type),//量子积分
new java .sql.Date(2012,1,1),// Data ParaValidação
'testclient0000001',// IDCliente
'*',// IDCatalogo
'*',// Titulo
'*',// IDObjecto
'*',// IDAcervo
'*',// Autor
'*',// Origem
'* ',// ZonaGeo
'FOTO' ,// Tipo Conteudo
'*',// Canal
'*',//上下文
'*',// URLString
1,//完成一个consumir
'UNI',// Unidade do Stock
new java.sql.Date(2011,1,1),// Data Conteudo
1,// Mes
1,/ / Dia
1,// Hora
1,// Minuto
'GLOBAL_IMAGEM',//网站客户端
1,// ScopeID $ b $'testclient0000001 @ user。 com',// UserID
null,//标记
null,//元数据
'*',// 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 colocar no consumo inline。 Normalmonte 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 object to a consumir
]){param1,param2 - > nRes = param1}

nRes

}

谢谢!
JoséCruz

解决方案

在您调用的数据库过程中,游标OUT参数需要是REF CURSOR ,不是普通的光标。


I need some help to call a Oracle Stored Procedure in Groovy and receive a ResultSet by an Output Parameter. I can call stored procedure with output parameters of other data types, but for CURSOR I cannot find the way.

"I'm always getting the error "java.sql.SQLException: Cursor is closed." The parameter (bellow) is: "Sql.out(OracleTypes.CURSOR), // lista de possiveis varios items a consumir"

Below my code (The connection is already 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
'testclient0000001@user.com', //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

}

thanks! José Cruz

解决方案

In the database procedure you're calling, the cursor OUT parameter needs to be a REF CURSOR, not a regular cursor.

这篇关于无法使用OUT参数oracletypes.cursor调用pl-sql存储过程的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆