ITPub博客

首页 > Linux操作系统 > Linux操作系统 > HOWTO--在procedure返回結果集

HOWTO--在procedure返回結果集

原创 Linux操作系统 作者:vongates 时间:2019-07-17 21:42:02 0 删除 编辑

在很多時候我們需要通過bind var來提高整個DB的performance,在我們用第三次開發軟件做對結果集的查詢。我們如何在procedure中完成對結果集的查詢呢,從oracle7.3才被支持,在9i以后又有新的變化,在9i以前要define一個type才可以。而在9i以后oracle引入了一個新的類型為sys_refcursor,這樣就不需要我們重新定義。我們來看一個例子吧。


C:oracleora92sqlplusdemo>sqlplus /nolog

SQL*Plus: Release 9.2.0.1.0 - Production on 星期六 4月 2 11:09:06 2005

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

SQL> conn scott/tiger@vongates
已連線.
SQL> create or replace procedure getEmpByDept(in_deptNo  in emp.deptno%type,
  2                                           out_curEmp out SYS_REFCURSOR) as
  3
  4  begin
  5    open out_curEmp for
  6      SELECT * FROM emp WHERE deptno = in_deptNo ;
  7  EXCEPTION
  8    WHEN OTHERS THEN
  9      RAISE_APPLICATION_ERROR(-20101,
 10                              'Error in getEmpByDept' || SQLCODE );
 12  end getEmpByDept;
 13  /

已建立程序.

SQL> var rset refcursor;
SQL> exec getEmpByDept(10,:rset);

PL/SQL 程序順利完成.

SQL> print rset;

     EMPNO ENAME                JOB                       MGR HIREDATE      SAL       COMM     DEPTNO
---------- -------------------- ------------------ ---------- ---------- ---------- ---------- ----------
      7934 MILLER               CLERK                    7782 23-1月 -82      1300                    10
      7782 CLARK                MANAGER                  7839 09-1月 -81      2450                    10
      7839 KING                 PRESIDENT                     17-11月-81      5000                    10

SQL>

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29987/viewspace-51737/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-09-11

  • 博文量
    449
  • 访问量
    292654