C# 使用Oracle ManagedDataAccess.dll将对象数组传递给存储过程
我正在将我的应用程序升级到Oracle.ManagedDataAccess。我想将对象数组传递给存储过程 以下是我的SP: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
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情况下适用,但在传递类对象数组时不适用。