Como chamar uma função Oracle com um Cursor de Referência como parâmetro Out de C #?

Estou usando um produto que fornece uma API de banco de dados baseada em funções Oracle e sou capaz de chamar funções via ODP.NET em geral. No entanto, não consigo descobrir como chamar uma função que inclua um Cursor de Referência como parâmetro de Saída. Todas as amostras que encontrei até agora chamam um procedimento com parâmetro Out ou uma função com o Cursor de referência como valor de retorno. Tentei definir os parâmetros de maneira semelhante, mas continuo recebendo o erro de que o número ou o tipo errado de parâmetros é fornecid

Aqui está o cabeçalho da função (obviamente ofuscado):

FUNCTION GetXYZ(
   uniqueId       IN   somepackage.Number_Type,
   resultItems    OUT  somepackage.Ref_Type)
   RETURN somepackage.Error_Type;

Estas são as definições de tipo em "somepackage":

SUBTYPE Number_Type IS NUMBER(13);
TYPE Ref_Type IS REF CURSOR;
SUBTYPE Error_Type IS NUMBER;

E este é o código que eu tentei:

string sql = "otherpackage.GetXYZ";
var getXYZCmd = OracleCommand oracleConnection.CreateCommand(sql);
getXYZCmd.CommandType = CommandType.StoredProcedure;

getXYZCmd.Parameters.Add("uniqueId", OracleDbType.Int32).Value = uniqueExplosionId;
getXYZCmd.Parameters.Add("resultItems", OracleDbType.RefCursor).Direction = ParameterDirection.Output;
getXYZCmd.Parameters.Add("return_value", OracleDbType.Int32).Direction = ParameterDirection.ReturnValue;

Tentei as seguintes maneiras diferentes de chamar a função (é claro, apenas uma de cada vez):

var result = getXYZCmd.ExecuteNonQuery();
var reader = getXYZCmd.ExecuteReader();
var scalarResult = getXYZCmd.ExecuteScalar();

Mas cada um deles falha com a mensagem de erro:

Oracle.DataAccess.Client.OracleException: ORA-06550: line 1, column 15:
PLS-00306: wrong number or types of arguments in call to 'GETXYZ'
ORA-06550: line 1, column 15:
PLS-00306: wrong number or types of arguments in call to 'GETXYZ'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored.

Então, geralmente é possível chamar uma função com um Cursor de Referência como parâmetro Out do C # com o ODP.NET? Posso chamar uma função com a mesma estrutura com um parâmetro Varchar2-Out em vez do Cursor de referência sem problemas ...

BTW, estou usando o ODP.NET versão 2.112.2.0 do C # .NET 3.5 no Visual Studio 2008.

Agradeço antecipadamente por sua ajuda

questionAnswers(1)

yourAnswerToTheQuestion