【发布时间】:2017-05-22 23:34:20
【问题描述】:
我正在尝试使用存储过程
variable data refcursor;
execute MyPkg(to_date('2010-08-11','yyyy-MM-dd'), TEXT_ARRAY('tempa','tempb'), :data);
其中TEXT_ARRAY 是TABLE OF varchar2(255) 类型的udt
C# 代码片段:
var cmd = new OracleCommand("BEGIN MyPkg(:Param1, :Param2, :Param3); END;", con);
var param1 = cmd.Parameters.Add("Param1", OracleDbType.Date);
var param2 = cmd.Parameters.Add("Param2", OracleDbType.Varchar2);
var param3 = cmd.Parameters.Add("Param3", OracleDbType.RefCursor);
param1.Direction = ParameterDirection.Input;
param2.Direction = ParameterDirection.Input;
param3.Direction = ParameterDirection.Output;
param1.Value = DateTime.Now;
param2.CollectionType = OracleCollectionType.PLSQLAssociativeArray;
param2.Value = new[] { "tempa", “tempb”};
param2.Size = 2;
param2.ArrayBindSize = new[] { 20, 20 };
cmd.ExecuteNonQuery();
我得到了错误:
“Oracle.ManagedDataAccess.Client.OracleException”类型的异常 在 Oracle.ManagedDataAccess.dll 中发生但未在用户中处理 代码附加信息:外部组件抛出了一个 例外。 -- ORA-06550:第 1 行,第 7 列:\nPLS-00306:错误编号 或调用“MyPkg”的参数类型\nORA-06550:第 1 行,第 1 列 7:\nPL/SQL: 语句被忽略”
关于如何解决此问题的任何线索?
【问题讨论】:
标签: c# oracle stored-procedures