我正在将我的应用程序升级到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的重复,因为我试图传递一组用户定义的对象而不是基本类型。