.net 调用oracle存储过程返回多个记录集

    1. CREATE OR REPLACE PROCEDURE p_query_cs (
    2.    p_infotype       IN       VARCHAR2,
    3.    p_fromareacode   IN       VARCHAR2, 
    4.    p_toareacode     IN       VARCHAR2,        
    5.    p_keytype        IN       NUMBER,                     
    6.    r_cursor1        OUT      sys_refcursor,                           --结果集
    7.    r_cursor2        OUT      sys_refcursor                            --结果集
    8. )
    9. IS
    10. BEGIN
    11.    OPEN r_cursor1 FOR
    12.       SELECT *
    13.         FROM permit_menu;
    14.    OPEN r_cursor2 FOR
    15.       SELECT *
    16.         FROM permit_privilege;
    17. EXCEPTION
    18.    WHEN NO_DATA_FOUND
    19.    THEN
    20.       NULL;
    21.    WHEN OTHERS
    22.    THEN
    23.       RAISE;
    24. END p_query_cs;
    25. /
    using
     System.Data.OleDb;
  1. using System.Data.OracleClient;
  2.  protected void cs1()
  3.         {
  4.             DataSet ds = new DataSet();
  5.             using (OleDbConnection conn = new OleDbConnection("Provider=OraOLEDB.Oracle.1;Password=***;User ID=***;Data Source=***;Persist Security Info=True;PLSQLRSet=1;"))
  6.             {
  7.                 OleDbCommand comm = new OleDbCommand();
  8.                 comm.Connection = conn;
  9.                 comm.CommandText = "p_query_cs";
  10.                 comm.CommandType = CommandType.StoredProcedure;
  11.                 OleDbDataAdapter da = new OleDbDataAdapter(comm);
  12.                 // da.TableMappings.Add("table1", "PERMIT_MENU");
  13.                 // da.TableMappings.Add("table2", "PERMIT_PRIVILEGE");
  14.                 da.Fill(ds);
  15.                 for (int j = 0; j < ds.Tables.Count; j++)
  16.                 {
  17.                     for (int i = 0; i < ds.Tables[j].Rows.Count; i++)
  18.                     {
  19.                         for (int k = 0; k < ds.Tables[j].Columns.Count; k++)
  20.                         {
  21.                             Response.Write(ds.Tables[j].Rows[i][k].ToString() + "|");
  22.                         }
  23.                         Response.Write("<br/>");
  24.                     }
  25.                 }
  26.             }
  27.         }
  28.  protected void cs3()
  29.         {
  30.             OracleConnection conn = new OracleConnection("Data Source=***;User Id=***;Password=***");
  31.             OracleCommand cmd = new OracleCommand();
  32.             cmd.Connection = conn;
  33.             cmd.CommandText = "p_query_cs";
  34.             cmd.Parameters.Add("r_cursor", OracleType.Cursor).Direction = ParameterDirection.Output;
  35.             cmd.Parameters.Add("r_cursor1", OracleType.Cursor).Direction = ParameterDirection.Output;
  36.             cmd.CommandType = CommandType.StoredProcedure;
  37.             OracleDataAdapter da = new OracleDataAdapter(cmd);
  38.             da.TableMappings.Add("Table""PERMIT_MENU");
  39.             da.TableMappings.Add("Table1""PERMIT_PRIVILEGE");
  40.             DataSet ds = new DataSet();
  41.             da.Fill(ds);
  42.              for (int j = 0; j < ds.Tables.Count; j++)
  43.                 {
  44.                     for (int i = 0; i < ds.Tables[j].Rows.Count; i++)
  45.                     {
  46.                         for (int k = 0; k < ds.Tables[j].Columns.Count; k++)
  47.                         {
  48.                             Response.Write(ds.Tables[j].Rows[i][k].ToString() + "|");
  49.                         }
  50.                         Response.Write("<br/>");
  51.                     }
  52.                 }
  53.         }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值