4 つの入力を受け取る PL/SQL ストアド プロシージャがあります。これらの入力の 1 つは連想配列です (Oracle タイプ: PLS_INTEGER による VARCHAR2(1) インデックスのテーブル)。
連想配列を含む適切な入力でこのストアド プロシージャを呼び出す C# プログラムが必要です。
Visual C# 2010 Express および Oracle 11gR2 で ODP.net 11.2 を使用しています。
C# から pl/sql プロシージャに配列を渡す方法の良い例が見つかりません。誰か私に例を挙げてもらえますか? Oracleドキュメントに正確に従っていると、引数の数またはタイプが間違っているというエラーが表示されます。
私の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();
私の手順は、メッセージをログに記録するだけです。私はただこのコンセプトを機能させようとしています。