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


    CREATE OR REPLACE PROCEDURE p_query_cs (
    p_infotype IN VARCHAR2,
    p_fromareacode IN VARCHAR2,
    p_toareacode IN VARCHAR2,
    p_keytype IN NUMBER,
    r_cursor1 OUT sys_refcursor, --结果集
    r_cursor2 OUT sys_refcursor --结果集
    )
    IS
    BEGIN
    OPEN r_cursor1 FOR
    SELECT *
    FROM permit_menu;

    OPEN r_cursor2 FOR
    SELECT *
    FROM permit_privilege;
    EXCEPTION
    WHEN NO_DATA_FOUND
    THEN
    NULL;
    WHEN OTHERS
    THEN
    RAISE;
    END p_query_cs;
    /


    cs程序


    using System.Data.OleDb;
    using System.Data.OracleClient;


    protected void cs1()
    {
    DataSet ds = new DataSet();
    using (OleDbConnection conn = new OleDbConnection("Provider=OraOLEDB.Oracle.1;Password=***;User ID=***;Data Source=***;Persist Security Info=True;PLSQLRSet=1;"))
    {
    OleDbCommand comm = new OleDbCommand();
    comm.Connection = conn;
    comm.CommandText = "p_query_cs";
    comm.CommandType = CommandType.StoredProcedure;
    OleDbDataAdapter da = new OleDbDataAdapter(comm);
    // da.TableMappings.Add("table1", "PERMIT_MENU");
    // da.TableMappings.Add("table2", "PERMIT_PRIVILEGE");
    da.Fill(ds);
    for (int j = 0; j < ds.Tables.Count; j++)
    {
    for (int i = 0; i < ds.Tables[j].Rows.Count; i++)
    {
    for (int k = 0; k < ds.Tables[j].Columns.Count; k++)
    {
    Response.Write(ds.Tables[j].Rows[i][k].ToString() + "|");
    }
    Response.Write("<br/>");
    }
    }

    }
    }


    protected void cs3()
    {
    OracleConnection conn = new OracleConnection("Data Source=***;User Id=***;Password=***");
    OracleCommand cmd = new OracleCommand();
    cmd.Connection = conn;
    cmd.CommandText = "p_query_cs";
    cmd.Parameters.Add("r_cursor", OracleType.Cursor).Direction = ParameterDirection.Output;
    cmd.Parameters.Add("r_cursor1", OracleType.Cursor).Direction = ParameterDirection.Output;
    cmd.CommandType = CommandType.StoredProcedure;
    OracleDataAdapter da = new OracleDataAdapter(cmd);
    da.TableMappings.Add("Table", "PERMIT_MENU");
    da.TableMappings.Add("Table1", "PERMIT_PRIVILEGE");
    DataSet ds = new DataSet();
    da.Fill(ds);
    for (int j = 0; j < ds.Tables.Count; j++)
    {
    for (int i = 0; i < ds.Tables[j].Rows.Count; i++)
    {
    for (int k = 0; k < ds.Tables[j].Columns.Count; k++)
    {
    Response.Write(ds.Tables[j].Rows[i][k].ToString() + "|");
    }
    Response.Write("<br/>");
    }
    }

    }

  • 相关阅读:
    axios的封装
    单行和多行文本溢出省略号显示!!!
    vue2源码-响应式处理(学习笔记)-2
    vue2源码-rollup的配置(学习笔记)-1
    js的垃圾回收机制
    立即执行函数
    闭包笔记
    vue3.0的CompositionAPI
    Create gym environment with your own xml file and training it using her of baseline
    Brief introduction to mujoco or gym modeling using xml
  • 原文地址:https://www.cnblogs.com/aaa6818162/p/4094825.html
Copyright © 2020-2023  润新知