Pergunta
Renato Araujo · Mar. 8

É possível receber Oracle Object Type como Output de uma stored procedure? (java.sql.Types STRUCT)

Boa tarde à todos!

Preciso fazer uma chamada sql (utilizando JDBC) para executar uma procedure que retorna um objeto estruturado (Oracle Object) como parâmetro de saída.

No entanto, o método do Adptador SQL não está aceitando o tipo de dado STRUCT do JDBC (referente ao Oracle Oject), retornando a seguinte mensagem de erro:

ERRO #5023: Erro no Gateway Remoto: JDBC Gateway SP execute(0) error 0: Remote JDBC error: ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'AGUARDAR_EVENTO'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

Declaração do parâmetro de saída:

Set tParams(1, "SqlType") = $$$SqlJStruct
Set tParams(1, "IOType") = $$$SQLPARAMOUTPUT

De acordo com a documentação, a interface STRUCT ainda não foi implementada pra o JDBC:

É necessário implementar essa interface para utilizar um Oracle Object como parâmetro em uma chamada SQL ou existe alguma outra forma?

Product version: IRIS 2020.1
$ZV: IRIS for Windows (x86-64) 2020.1 (Build 215U) Mon Mar 30 2020 20:14:33 EDT [HealthConnect:2.1.0]
1
0 40
Discussão (1)2
Entre ou crie uma conta para continuar

Olá Renato,

Até onde sei ainda não é possível.

Acredito que o mais fácil seria alterar a assinatura da sua stored procedure para retornar vários parâmetros de output contendo os dados da sua estrutura.