1. 循环输出Cursor中的数据
-- Created on 2012/11/27 by JACKIE
declare
cursor c_dept is select dept.deptno,dept.dname,dept.loc from dept; --定义Cursor
v_dno integer;
v_dme varchar2(20);
v_dloc varchar2(20);
begin
open c_dept; --打开Cursor
/*
--循环输出cursor中的数据 1
*/
loop
fetch c_dept into v_dno,v_dme,v_dloc;
exit when c_dept %notfound;
dbms_output.put_line(v_dno||' '|| v_dme||' '||v_dloc);
end loop;
/*
-- 循环输出cursor中的数据 2
fetch c_dept into v_dno,v_dme,v_dloc;
while c_dept %found loop
dbms_output.put_line(v_dno||' '|| v_dme||' '||v_dloc);
fetch c_dept into v_dno,v_dme,v_dloc;
end loop;
*/
close c_dept; --关闭Cursor
end;
2. 最简单的返回游标(SYS_REFCURSOR)的存储过程例子(个人比较喜欢这个方式,不需要package之类的要定义这个那个的)
create or replace procedure testp(rtn out SYS_REFCURSOR) as
begin
open rtn for
select * from dept;
end testp;