我的情況Oracle.DataAccess(ODP.NET)數組綁定「值沒有在預期範圍內」
我使用ODP.NET Oracle提供與C#3.5,我想傳遞一個數組作爲參數的過程...這樣的:
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」};它與此錯誤
「值沒有在預期範圍內」
任何人都可以修復它趕上?
附加信息
指定OracleDbType誤差是固定的,但在執行給我一些錯誤
paramNames.OracleDbType = OracleDbType.Varchar2;
「無法轉換類型的對象‘System.String []’爲類型「系統.IConvertible」。」
我的目標是做這樣的事情
http://aspalliance.com/621_Using_ODPNET_to_Insert_Multiple_Rows_within_a_Single_Round_Trip.3
WITH OUT參數
另一個問題插入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。
但我出了差錯,例如isnerting第2行中,整個OUT參數(數組)在第0總是設置我預期至少PARAMS [0]。價值明顯增強
由於
確定人第ANKS我解決了它.....但現在我有另一個問題...我引入一個OUT參數作爲數組,它的工作原理就像一個數據庫,但只有當PLSQL過程成功。如果在數組循環過程中出現問題,所有OUT數組參數都將被重置 – user756037
@ user756037您是否在執行正在執行的pl/sql塊中執行任何異常處理?你應該能夠捕捉和處理(或至少不中斷陣列中的其他項目),通過不允許異常冒泡。 – Harrison
我只調用cmd.ExecuteNonQuery();在try {} catch {}語句中,並且在{}中檢查參數 – user756037