Передача параметра Array из C# в тип таблицы Oracle collection

Я объявил таблицу сбора и запись в спецификации PLSQL.

         type loan_recov_rec is  record(v_prncpl_ed_cd number(3),v_prncpl_recov number   (7),v_int_ed_cd number(3),
     v_int_recov,number(5));



  type loan_recov_tbl is table of loan_recov_rec index by binary_integer;

процедура pr_final_settlement(v_loan_recov_tbl в Loan_rekov_tbl);

Итак, я передаю параметр Array со страницы C #

 cmd.ArrayBindCount = v_loan_recov_tbl.Length;
                Oracle.DataAccess.Client.OracleParameter P_loan_recov = new Oracle.DataAccess.Client.OracleParameter("v_loan_recov_tbl", Oracle.DataAccess.Client.OracleDbType.Int32);
P_loan_recov.Direction = ParameterDirection.Input;

P_loan_recov.CollectionType = Oracle.DataAccess.Client.OracleCollectionType.PLSQLAssociativeArray;
P_loan_recov.Value = v_loan_recov_tbl;
cmd.Parameters.Add(P_loan_recov);

используя приведенный выше код, он не работает, он получает ошибку Unable to cast object of type 'System.Int32' to type 'System.Array'. v_loan_recov_tbl is an Array Parameter. Слышите, я использую тип данных, поскольку OracleDbType.Int32 это правильно, или мне нужно удалить другой тип данных. Я объявляю входной параметр в процедуре как таблицу


person Shailesh    schedule 21.12.2012    source источник


Ответы (1)


Я вижу две проблемы. Сначала вы работаете с типом записи, определенным в PL/SQL, а не с типом объекта, определенным в SQL. ODAC хочет, чтобы типы объектов определялись SQL. Во-вторых, предполагая, что у вас есть все правильные типы объектов, определенные в SQL, и определенные пользовательские типы C#, есть отличный пример кода C# для работы с привязкой массива в программном стеке ODP.NET на вашем компьютере: %ODAC_HOME%\odp.net\ образцы\4\AssocArray.

person Michael O'Neill    schedule 03.04.2013