我正在将我的应用程序升级到 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=Oracle Data Provider for .NET, Managed Driver
这不是这个的副本,因为我试图传递一个用户定义的对象数组而不是原始类型。