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

时间:2017-12-08 15:03:11

标签: 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            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);

错误:

  

Message =不支持的列数据类型   Source =适用于.NET的Oracle数据提供程序,托管驱动程序

这不是this的重复,因为我试图传递一组用户定义的对象而不是基本类型。

0 个答案:

没有答案