zoukankan      html  css  js  c++  java
  • [转].net 调用oracle存储过程返回多个记录集

    本文转自:http://www.netwinform.com/articleinfo.aspx?id=17

    存储过程: 
    
    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/>"); 
    } 
    } 
    
    }
  • 相关阅读:
    Java面试——从JVM角度比较equals和==的区别
    Java线程和多线程(三)——线程安全和同步
    玩转Android之MVVM开发模式实战,炫酷的DataBinding!
    写点什么好呢2? 钱、事业、婚姻、人生意义
    写点什么好呢2? 钱、事业、婚姻、人生意义
    大型网站架构技术一览
    【树莓派】GSM900模块
    【Latex】数学公式排版
    【MYSQL】导入中文后乱码问题
    【R】shiny界面
  • 原文地址:https://www.cnblogs.com/freeliver54/p/3154357.html
Copyright © 2011-2022 走看看