日期:2014-05-16  浏览次数:20397 次

Oracle存储过程返回结果集

这里以Oracle的scott/tiger作为示例数据表,Oracle通过返回REF CURSOR来返回结果集。

1.创建包:

  1  CREATE OR REPLACE PACKAGE TYPES AS
  2     TYPE BJ_CURSOR IS REF CURSOR;
  3* END;
SQL> /

程序包已创建。

?

2.创建过程:

  1    CREATE OR REPLACE PROCEDURE BJ_TEST_PROC
  2      (
  3              V_TEMP OUT TYPES.BJ_CURSOR,
  4              PID IN VARCHAR
  5      )
  6      AS
  7      BEGIN
  8              OPEN V_TEMP FOR SELECT * FROM emp WHERE deptno = PID;
  9*    END BJ_TEST_PROC;
SQL> /

过程已创建。

?

3.设置SQLPLUS环境

SQL> set pagesize 50;
SQL> set linesize 1024;
SQL> set serveroutput on;

?

4.调用过程:

SQL> var a refcursor
SQL>  var n number
SQL> exec :n:=10

PL/SQL 过程已成功完成。

SQL>  call BJ_TEST_PROC(:a,:n);

?

5.输出结果:

SQL> print a

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

?

?

?

1 楼 yzs5273 2010-06-28  
引用
[flash=200,200][/flash][url][/url][img][/img]
引用
引用
[u][/u][url][/url][url][/url][img][/img]
引用
[i][/i]
引用
[img]  8              OPEN V_TEMP FOR SELECT * FROM emp WHERE deptno = PID;   [/img]
引用
[u][/u]
引用

我的异常网推荐解决方案:oracle存储过程,http://www.aiyiweb.com/oracle-develop/177537.html