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/>"); 
    } 
    } 
    
    }
  • 相关阅读:
    Pro Andorid3第二章:设置开发环境
    Seminar 记录
    安装CGAL
    Literature review
    第七章:清楚简洁的英文 《英语科技写作(文法与修辞原则)》by 方克涛
    幻灯片制作去除模板背景
    vs2008下设置.h, .lib和 .dll 的路径配置全图及其意义
    配置环境变量
    PPT制作技巧
    #include文件时用双引号和尖括号的区别
  • 原文地址:https://www.cnblogs.com/freeliver54/p/3154357.html
Copyright © 2011-2022 走看看