--建立一个包以定义一个游标 create or replace package PK_test as type cur_test is ref cursor; end PK_test;
--建立一个过程,通过输入JOBID,返回一个表记录(游标)! create or replace procedure PR_TEST_CURSOR (JOBID IN VARCHAR2,cur_test out pk_test.cur_test) as begin open cur_test for select ENAME,JOB from emp where JOB=JOBID; end;
--通过过程调用生成游标(红色部分),并利用游标打印. declare type t_name is table of scott.emp.ename%type; type t_job is table of scott.emp.job%type; cr_test pk_test.cur_test; e_name t_name; e_job t_job; begin --open cr_test for select ename,job from emp where job='MANAGER'; PR_TEST_CURSOR('MANAGER',cr_test); fetch cr_test BULK COLLECT INTO e_name, e_job; CLOSE cr_test;
for i in e_name.first..e_name.last loop dbms_output.put_line(e_name(i)||e_job(i)); end loop; end;