¿Cómo llamar a una función de Oracle con un cursor de referencia como parámetro de salida desde C #?

Estoy usando un producto que proporciona una API de base de datos basada en funciones de Oracle y puedo llamar funciones a través de ODP.NET en general. Sin embargo, no puedo entender cómo llamar a una función que incluye un cursor de referencia como parámetro de salida. Todas las muestras que encontré hasta ahora llaman un procedimiento con parámetro Out o una función con el cursor de referencia como valor de retorno. Traté de definir los parámetros de manera similar, pero sigo recibiendo el error de que se proporciona el número o tipo incorrecto de parámetros.

Aquí está el encabezado de la función (obviamente ofuscado):

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

Estas son las definiciones de tipo en "algún paquete":

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

Y este es el código que he probado:

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;

Probé las siguientes formas diferentes de llamar a la función (por supuesto, solo una a la vez):

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

Pero cada uno de ellos falla con el mensaje de error:

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.

Entonces, ¿es generalmente posible llamar a una función con un cursor de referencia como parámetro de salida desde C # con ODP.NET? Puedo llamar a una función con la misma estructura con un parámetro Varchar2-Out en lugar del Cursor Ref sin problemas ...

Por cierto, estoy usando ODP.NET versión 2.112.2.0 de C # .NET 3.5 en Visual Studio 2008.

¡Gracias de antemano por tu ayuda

Respuestas a la pregunta(1)

Su respuesta a la pregunta