北京金同方计算机培训,考试认证
当前位置:中招首页 -> IT培训 -> 国外认证 -> Oracle认证 -> 复习指导 -> 
在Oracle中返回多个结果集的处理

2005-11-15 11:17:11 来源:豆豆技术网
    Oracle 不支持批量查询,因此无法从一个命令返回多个结果集。使用存储过程时,返回多个结果集类似于返回单个结果集;必须使用 REF CURSOR 输出参数。要返回多个结果集,请使用多个 REF CURSOR 输出参数。
    以下是返回两个结果集(全部 EMPLOYEES 和 JOBS 记录)的包规范:

    CREATE OR new PACKAGE SELECT_EMPLOYEES_JOBS AS
    TYPE T_CURSOR IS REF CURSOR;
    PROCEDURE GetEmployeesAndJobs (
    cur_Employees OUT T_CURSOR,
    cur_Jobs OUT T_CURSOR
    );
    END SELECT_EMPLOYEES_JOBS;

    包正文如下所示:

    CREATE OR new PACKAGE BODY SELECT_EMPLOYEES_JOBS AS
    PROCEDURE GetEmployeesAndJobs
    (
    cur_Employees OUT T_CURSOR,
    cur_Jobs OUT T_CURSOR
    )
    IS
    BEGIN
    -- return all EMPLOYEES records
    OPEN cur_Employees FOR
    SELECT * FROM Employees;

    return all JOBS records
    OPEN cur_Jobs FOR
    SELECT * FROM Jobs;
    END GetEmployeesAndJobs;
    END SELECT_EMPLOYEES_JOBS;


 

    以下代码显示了如何使用从上述包中返回的两个结果集来填充 DataSet 中的两个相关表:

    create the connection
    OracleConnection conn = new OracleConnection("Data Source=oracledb;
    User Id=UserID;Password=Password;");

    define the command for the stored procedure
    OracleCommand cmd = new OracleCommand();
    cmd.Connection = conn;
    cmd.CommandText = "SELECT_EMPLOYEES_JOBS.GetEmployeesAndJobs";

    add the parameters including the two REF CURSOR types to retrieve
    the two result sets
    cmd.Parameters.Add("cur_Employees", OracleType.Cursor).Direction =
    ParameterDirection.Output;
    cmd.Parameters.Add("cur_Jobs", OracleType.Cursor).Direction =
    ParameterDirection.Output;
    cmd.CommandType = CommandType.StoredProcedure;

    create the DataAdapter and map tables
    OracleDataAdapter da = new OracleDataAdapter(cmd);
    da.TableMappings.Add("Table", "EMPLOYEES");
    da.TableMappings.Add("Table1", "JOBS");

    create and fill the DataSet
    DataSet ds = new DataSet();
    da.Fill(ds);

    create a relation
    ds.Relations.Add("EMPLOYEES_JOBS_RELATION",
    ds.Tables["JOBS"].Columns["JOB_ID"],
    ds.Tables["EMPLOYEES"].Columns["JOB_ID"]);

    output the second employee (zero-based array) and job title
    based on the relation
    Console.WriteLine("Employee ID: " +
    ds.Tables["EMPLOYEES"].Rows[1]["EMPLOYEE_ID"] +
    "; Job Title: " +
    ds.Tables["EMPLOYEES"].Rows[1].GetParentRow(
    "EMPLOYEES_JOBS_RELATION")["JOB_TITLE"]);

    控制台输出显示了第二个员工的职务:

    Employee ID: 101; Job Title: Administration Vice President

    来自于:http://www.microsoft.com/china/MSDN/library/data/dataAccess/DMSDNorsps.

mspx
    遇到的错误:在开发时遇到了未处理的句柄错误,其原因是没有为所有的输出参数返回值。

   关键词  >>Oracle认证
 
新世纪电脑培训学校
北京新华电脑学校
百事特教育学院
金同方计算机学校
北大燕工教育研究院
中科院计算所培训中心

  ■ 最新推荐课程

 ·长城平面设计师就业专修课程  ·育人电脑组装维修培训课程  ·新科海三维设计师就业班课程
 ·中科院JAVA软件工程师培训课程  ·中科院计计算机网络系统集成  ·千禧艺海高级三维室内装潢设计
 ·金同方高级文秘助理实战课程  ·科华时代 3ds max设计师课程  ·北京交通大学日语软件工程师
相关文章
 ·有关Oracle认证专家考试科目一览表
 ·球获得Oracle认证者逾越20万人
 ·全球获得Oracle认证人数最新统计
 ·Oracle认证基本知识介绍
 ·Oracle认证大师的魔力
论坛热贴
 【发表评论】
 昵称:
 内容:
 
 【最新评论】 更多...
中招在线版权与免责声明:
① 凡本站注明“稿件来源:中招在线”的所有文字、图片和音视频稿件,版权均属本网所有,任何媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发表。已经本站协议授权的媒体、网站,在下载使用时必须注明"稿件来源:中招在线",违者本站将依法追究责任。
② 本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。
热 点 聚 焦
Google
   
精 彩 推 荐
免费下载Firefox,改进网页浏览
免费下载相片软件整理你的照片
·新科海平面设计师就业课程
·新科海软件测试工程师课程
·理工百事特软件编程课程
·百事特装饰装潢设计师课程
·J2EE Struts及XML编程技术
·千禧艺海影视后期特效课程
·JAVA软件开发专业课程
·清华万博1+6网络技术总监
·中科院企业VI平面广告课程
·中科院VC++ 6.0/VC++.Net
 
本周院校排行榜
最新资源排行榜
 
 
关于中招 - 广告服务 - 网站建设 - 版权声明 - 联系我们 - 英才加盟 - 网站地图 - 友情链接 - 免责声明 - 设为首页
Copyright @ 2005-2008 zhongzhao.com All Rights Reserved.
中招在线 版权所有