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 refcursorSQL> var n numberSQL> exec :n:=10PL/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
?
?
?
[img] 8 OPEN V_TEMP FOR SELECT * FROM emp WHERE deptno = PID; [/img]引用[u][/u]引用我的异常网推荐解决方案:oracle存储过程,http://www.myexception.cn/oracle-develop/177537.html