小编Wal*_*nce的帖子

通过.NET用PL / SQL集合类型参数调用Oracle过程

我正在尝试通过.NET调用Oracle存储过程。通常这不是问题,但是此存储过程包含一个PL / SQL集合类型的参数:

create or replace type test_type as table of number;
PROCEDURE TEST1 (pvTest IN test_type);
Run Code Online (Sandbox Code Playgroud)

这是我的C#代码:

var receiverIds = new decimal[] { 683552, 683553, 683572, 683573, 683592, 683593, 683594, 683612 };
var receiversList = new OracleParameter("pvTest", OracleDbType.Decimal, ParameterDirection.Input);
receiversList.CollectionType = OracleCollectionType.PLSQLAssociativeArray;
receiversList.Size = receiverIds.Length;
receiversList.Value = receiverIds;

using (var oracleCommand = new OracleCommand())
{
    oracleCommand.Connection = this.oracleConnection;
    oracleCommand.CommandText = "test_package.TEST1";
    oracleCommand.BindByName = true;

    oracleCommand.Parameters.Add(parameter);

    oracleCommand.CommandType = CommandType.StoredProcedure;

    oracleCommand.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)

执行此操作时,出现“ ORA-06550:错误的参数编号或类型”错误。在本主题中:ORA-06550:错误的参数数目或类型错误 使用Table type IN参数调用Oracle Procedure时,我发现应该在包中声明我的自定义类型。

因此,我创建了一个如下所示的测试包: …

c# oracle plsql

3
推荐指数
1
解决办法
5749
查看次数

标签 统计

c# ×1

oracle ×1

plsql ×1