我正在尝试将一个数字表从我的.NET代码传递给我的程序。参数的类型如下:
TYPE ARRAY_OF_NUMBER作为数字表;
我正在使用以下代码调用该过程:
OracleParameter x = new OracleParameter(); x.OracleDbType = OracleDbType.Decimal; x.Direction = ParameterDirection.Input; x.CollectionType = OracleCollectionType.PLSQLAssociativeArray; x.Value = new int[3] { 1, 2, 3 }; objCmd.Parameters.Add(x);
但由于x.Value格式:
,我收到以下错误PLS-00306:numérooutypes d'argumentserronés
您是否知道可以使用“TABLE OF NUMBER”的.NET类型?
答案 0 :(得分:0)
您可能错了,TYPE
不是ASSOCIATIVE ARRAY
。这是NESTED TABLE
。
答案 1 :(得分:0)
您必须使用关联数组,例如:
TYPE ARRAY_OF_NUMBER AS TABLE OF NUMBER INDEX BY INTEGER;
答案 2 :(得分:0)
对我而言,它看起来像一个PL / SQL表而不是嵌套表。
如果您使用的是嵌套表,即用户定义类型,则应使用Oracle Developer Tools自定义类生成工具创建可以映射到它的.NET类。
为了获得更好的性能,请尽可能使用关联数组。