C# 使用Oracle ManagedDataAccess.dll将对象数组传递给存储过程

C# 使用Oracle ManagedDataAccess.dll将对象数组传递给存储过程,c#,oracle,oracle12c,odp.net,oracle-manageddataaccess,C#,Oracle,Oracle12c,Odp.net,Oracle Manageddataaccess,我正在将我的应用程序升级到Oracle.ManagedDataAccess。我想将对象数组传递给存储过程 以下是我的SP: CREATE OR REPLACE TYPE MATCHING_CRITERIA_LIST IS TABLE OF CRITERIA; CREATE OR REPLACE PROCEDURE GET_FILTERED_EMPLOYEE ( IN_CRITERIA_LIST IN MATCHING_CRITERIA_LIST, CUR_OUT

我正在将我的应用程序升级到Oracle.ManagedDataAccess。我想将对象数组传递给存储过程

以下是我的SP:

CREATE OR REPLACE TYPE MATCHING_CRITERIA_LIST IS TABLE OF CRITERIA;

CREATE OR REPLACE PROCEDURE GET_FILTERED_EMPLOYEE (
IN_CRITERIA_LIST   IN       MATCHING_CRITERIA_LIST,
CUR_OUT            OUT      sys_refcursor
)
AS
OPEN CUR_OUT FOR
--My Select Query--
END;
我试图通过C#.NET执行SP,结果出错

var param = new OracleParameter() { ParameterName = "IN_CRITERIA_LIST", Direction = ParameterDirection.Input, CollectionType = OracleCollectionType.PLSQLAssociativeArray, DbType = DbType.Object}; 
param.Value = /*Some Array */;
var parameters = new List<IDbDataParameter>() {param, new OracleParameter("CUR_OUT", OracleDbType.RefCursor) { Direction = ParameterDirection.Output }};
reader = dbConn.ExecuteReaderWithParams("GET_FILTERED_EMPLOYEE", parameters, CommandType.StoredProcedure);
var param=new OracleParameter(){ParameterName=“IN_CRITERIA_LIST”,Direction=ParameterDirection.Input,CollectionType=OracleCollectionType.plsqlAssociationArray,DbType=DbType.Object};
参数值=/*某些数组*/;
var parameters=new List(){param,new OracleParameter(“CUR_OUT”,OracleDbType.RefCursor){Direction=ParameterDirection.Output};
reader=dbConn.ExecuteReaderWithParams(“GET_FILTERED_EMPLOYEE”,参数,CommandType.StoredProcess);
错误:

消息=不支持的列数据类型 Source=Oracle.NET数据提供程序,托管驱动程序


这不是的副本,因为我试图传递的是用户定义的对象数组,而不是基元类型。

不,它不是副本。我正在尝试传递对象数组。您共享的链接是传递字符串数组/int。上面的代码在int情况下适用,但在传递类对象数组时不适用。