为输出变量设置OracleParameter的类型是什么?

时间:2016-08-12 18:10:33

标签: c# oracle entity-framework

我们的数据库管理员给了我以下代码来运行他创建的包:

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();

1 个答案:

答案 0 :(得分:0)

您必须使用OracleCollectionType.PLSQLAssociativeArray类型,请参阅PL/SQL Associative Array Binding

但是,对于输出值,您应该更喜欢RefCursor数据类型,请参阅PL/SQL REF CURSOR and OracleRefCursor