日期:2014-05-16 浏览次数:20467 次
这里以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
?
?
?