C # 2010, ODP.net, wywołanie tablicy procedur przechowanych
Mam zapisaną procedurę PL / SQL, która pobiera 4 wejścia. Jednym z tych wejść jest tablica asocjacyjna (typ Oracle: tabela indeksu VARCHAR2 (1) według PLS_INTEGER).
Chcę mieć program C #, który wywołuje tę procedurę przechowywaną z właściwymi wejściami, w tym tablicą asocjacyjną.
Używam ODP.net 11.2 z Visual C # 2010 Express i Oracle 11gR2.
Nie mogę znaleźć żadnych dobrych przykładów, jak przekazać tablicę do procedury pl / sql z C #. Czy ktoś może mi dać przykład? Podążanie za dokumentacją Oracle daje mi dokładnie błąd mówiący o błędnej liczbie lub rodzaju argumentów.
Mój kod 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();
Cała moja procedura polega na zapisaniu wiadomości. Po prostu staram się, aby ta koncepcja zadziałała.