关于这个问题有很多问题和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