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