【问题标题】:Parameter passing between .NET and PLSQL.NET 和 PLSQL 之间的参数传递
【发布时间】:2014-11-26 12:05:46
【问题描述】:

我正在尝试将一个数字表从我的 .NET 代码传递给我的过程。参数类型如下:

将 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éro ou types d'arguments erronés

您对可以与“数字表”匹配的 .NET 类型有任何想法吗?

【问题讨论】:

    标签: .net oracle plsql odp.net


    【解决方案1】:

    对我来说,这看起来像是 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

    【讨论】:

      【解决方案2】:

      你必须使用关联数组,例如:

      TYPE ARRAY_OF_NUMBER AS TABLE OF NUMBER INDEX BY INTEGER;
      

      【讨论】:

        【解决方案3】:

        你可能弄错了,TYPE 不是ASSOCIATIVE ARRAY。这是一个NESTED TABLE

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-06
        相关资源
        最近更新 更多