使用C#for Oracle过程传递Tabled Value参数

时间:2017-10-07 12:14:54

标签: c# oracle

我有一个在我的ORACLE DATABASE

中获取tabled值参数的过程
  TYPE Table1 IS TABLE OF "Owner".Param1.TableName%TYPE;  
  TYPE Table2 IS RECORD (  Param1 NUMBER,  Param2  NUMBER,  Param3   VARCHAR2(20));
  TYPE Table3 IS TABLE OF Table2;

程序如下:

      PROCEDURE USP_PROCEDURE_NAME  ( pi_Param_1 Table1, po_Param2 out sys_refcursor ) AS
   output_Table  Table3 := Table3();

    n integer := 0;
    BEGIN
     for r in (select ID, Addl_ID, code from  "Owner"."t_CODE" where ID = pi_Param_1(n))
    loop
      output_Table.extend;
      n := n + 1;
    output_Table(n) := Table2(r.Param1, r.Param2, r.Param3);
   end loop;

    END USP_PROCEDURE_NAME;

我怎样才能调用我的c#代码中的参数。

       public DataTable GetFields(DataTable ID)
       {
         DataTable dt_getFields = new DataTable();
         System.Data.OracleClient.OracleParameter[] oraParam = new System.Data.OracleClient.OracleParameter[2];
         oraParam[0] = OracleHelper.CreateParam("pi_Param_1", System.Data.OracleClient.OracleType.??, ParameterDirection.Input, ID);
         oraParam[1] = OracleHelper.CreateParam("po_Param2", System.Data.OracleClient.OracleType.Cursor, ParameterDirection.Output, "0");
         dt_getFields = OracleHelper.ReturnDataTable(CommandType.StoredProcedure, "USP_PROCEDURE_NAME", oraParam)
         return dt_getFields;
        }

如何传递Tabled值参数,因为System.Data.OracleClient.OracleType没有任何适合DataTable的东西?这样做还有其他工作吗

编辑:

我无法使用OracleDbType,因为我无法在我的机器上安装Oracle.DataAccess dll。这样做有其他选择吗?

0 个答案:

没有答案