.NET和PLSQL之间的参数传递

时间:2014-10-01 15:29:12

标签: .net oracle plsql odp.net

我正在尝试将一个数字表从我的.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类型?

3 个答案:

答案 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类。

为了获得更好的性能,请尽可能使用关联数组。

浏览自定义类生成器: https://apex.oracle.com/pls/apex/f?p=44785:24:4267364986371:::24:P24_CONTENT_ID,P24_PROD_SECTION_GRP_ID,P24_PREV_PAGE:10199,,24