關於這個問題有很多問題和confusingdocs,但迄今爲止沒有運氣。ODP.NET如何將字符串數組傳遞給Oracle存儲過程?
我有以下的PL/SQL存儲過程;
PROCEDURE PS_test(
Liste1 Listcar,
Liste2 Listcar,
P_CURS_MESSAGE out CURSOR_REF_TYP
)
凡類型Listcar
如下:
TYPE Listcar IS VARRAY(100)VARCHAR2(50);
這裏是我想到目前爲止:
string[] list = { "name1", "name1" };
OracleParameter oParam = (OracleParameter)myOracleCommand.CreateParameter();
oParam.ParameterName = "Liste1";
oParam.UdtTypeName = "LISTCAR";
oParam.Value = list;
oParam.Direction = ParameterDirection.Input;
myOracleCommand.Parameters.Add(oParam);
隨着對價值分配以下錯誤:
Value does not fall within the expected range.
試圖利用類型varchr2,設置ArrayBindSize等目前爲止,但沒有運氣。
我猜接口IOracleArrayTypeFactory
可能在某處發揮作用,但是怎麼做?
對於性能,關聯數組優於VARRAY。以下是包含關聯數組的一些與性能相關的演練:http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/dotnet/OptimizePerfODPNET/OptimizePerfODPNET.htm由於VARRAY是用戶定義類型,因此如果您仍想使用它們在這裏是一個步驟,展示瞭如何使用.NET中的UDT一般http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/dotnet/userdefinedtypes/userDefinedTypes.htm – 2012-03-16 08:01:10