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