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;