C # 2010, ODP.net, procedimiento almacenado de llamadas que pasa la matriz
Tengo un procedimiento almacenado PL / SQL que toma 4 entradas. Una de esas entradas es una matriz asociativa (Tipo de Oracle: Tabla del índice VARCHAR2 (1) por PLS_INTEGER).
Quiero tener un programa C # que llame a este procedimiento almacenado con las entradas adecuadas, incluida la matriz asociativa.
Estoy usando ODP.net 11.2 con Visual C # 2010 Express y Oracle 11gR2.
No puedo encontrar ningún buen ejemplo de cómo pasar una matriz a un procedimiento pl / sql desde C #. ¿Alguien puede darme un ejemplo? Seguir la Documentación de Oracle me da exactamente un error al decir Número incorrecto o tipo de argumentos.
Mi código de C #:
OracleCommand cmd = new OracleCommand("begin sdg_test.sdg_test2(:1); end;", conn);
OracleParameter Param1 = cmd.Parameters.Add("1", OracleDbType.Varchar2);
Param1.Direction = ParameterDirection.Input;
Param1.CollectionType = OracleCollectionType.PLSQLAssociativeArray;
Param1.Value = new string[22] { "Y", "Y", "N", "Y", "N", "Y", "Y", "Y", "Y", "Y", "N", "Y", "N", "Y", "Y", "Y", "Y", "Y", "N", "Y", "N", "Y" };
Param1.Size = 22;
Param1.ArrayBindSize = new int[22] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
cmd.ExecuteNonQuery();
conn.Close();
conn.Dispose();
Todo lo que mi procedimiento hace es registrar un mensaje. Solo estoy tratando de hacer que este concepto funcione.