私のシナリオ「値が予想される範囲内に収まっていない」、と私は、配列を渡ししようとしていますこのような手順...のパラメータとして:Oracle.DataAccess(ODP.NET)配列バインド</p> <p>私はC#3.5でのODP.NETのOracleプロバイダを使用してい
var paramNames = new OracleParameter();
paramNames.CollectionType = OracleCollectionType.PLSQLAssociativeArray;
paramNames.ParameterName = "P_JOB_TITLE";
paramNames.Size = 2;
paramNames.Value = new string[2]{ "name1", "name1" };
cmd.Parameters.Add(paramNames);
ランタイムコードがparamNames.Value =新しい文字列[2] { "NAME1"、 "NAME1"}になると、それは誰もがそれを修正することができ
を「値が予想される範囲内に収まっていません」このエラー
でキャッチ?
ADDITIONAL INFO
指定OracleDbTypeのエラーが固定されているが、「システムを入力するために '[]可能System.String' タイプのオブジェクトをキャストすること
paramNames.OracleDbType = OracleDbType.Varchar2;
」ができません。私にいくつかのエラーを与えて実行します.IConvertible '。 "
私の目標は、この
http://aspalliance.com/621_Using_ODPNET_to_Insert_Multiple_Rows_within_a_Single_Round_Trip.3
OUTパラメータを持つ別の問題
とき、それが正しく満たされている。この
paramNames = new OracleParameter();
paramNames.ParameterName = "O_JOB_ID";
paramNames.Size = 3;
paramNames.Direction = ParameterDirection.Output;
paramNames.OracleDbType = OracleDbType.Int32;
paramNames.Value = new int[3] { 0, 0, 0 }; ;
cmd.Parameters.Add(paramNames);
などのアウトパラメータを挿入するような何かをすることですExecuteNonQueryが終了しました。たとえば、pls-sqlプロシージャは3つの挿入を実行し、各配列レコードのrow-idを返します。
が、私は何かが2列目をisnerting例えば、うまくいかない、全体OUTパラメータ(配列)は常に0に設定されている私は期待少なくとも.VALUEが
おかげ
を増強された[0]のparams
OK男目@ anks私はそれを修正しました.....しかし、私は別の問題を抱えています...私は配列としてOUTパラメータを導入し、シャルムのように動作しますが、PLSQLプロシージャが正常に終了したときにのみ動作します。配列のループ中に何かがうまくいかない場合、すべてのOUT配列パラメータがリセットされます – user756037
@ user756037実行されているpl/sqlブロックで例外処理を行っていますか?例外をバブルアップしないようにして、キャプチャして処理することができます(または少なくとも配列内の他のアイテムを中断させる必要はありません)。 – Harrison
私はcmd.ExecuteNonQuery()を呼び出します。 try {} catch {}文で、最後に{} iでパラメータをチェックします。 – user756037