3

我正在将我的应用程序升级到 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

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

4

0 回答 0