我们的数据库管理员给了我以下代码来运行他创建的包:
Declare
MT MY_PACKAGE.MET_TBL; --- This reads the record layout defined in the Package
Begin
MY_PACKAGE.MY_PROC(inParam => 50, outParam => MT);
End;
在Oracle中,它似乎是一种记录。
TYPE DATA_REC is Record( --- fields...);
TYPE MET_TBL IS TABLE OF DATA_REC INDEX BY BINARY_INTEGER;
我的问题是我为输出变量设置了什么类型? 我似乎没有看到OracleDbType中的等效类型。
这是我的代码......
var inParam = new OracleParameter("inParam", OracleDbType.Int16, 150, ParameterDirection.Input);
// What type should I use??
var outParam = new OracleParameter("outParam", OracleDbType., ParameterDirection.Output);
var result = context.Database
.SqlQuery<MyTest>("BEGIN MY_SCHEMA.MY_PACKAGE.MY_PROC(:inParam, :outParam); end;", inParam, outParam).ToList();
答案 0 :(得分:0)
您必须使用OracleCollectionType.PLSQLAssociativeArray
类型,请参阅PL/SQL Associative Array Binding
但是,对于输出值,您应该更喜欢RefCursor数据类型,请参阅PL/SQL REF CURSOR and OracleRefCursor