基表数据:
创建存储过程:
create or replace procedure PRO_LOOP_EMP is --声明游标 v_emp emp%rowtype; --让游标变量c_emps指向一个动态select查询的结果集 cursor c_emps is select * from emp where rownum <= 10; begin --打开游标变量c_emps open c_emps; --循环开始 loop --需要显式声明游标,显式打开、关闭游标 fetch c_emps into v_emp; exit when c_emps%notfound; if v_emp.ENAME = 'SMITH' then dbms_output.put_line('史密斯' || ' - ' || v_emp.JOB); elsif v_emp.ENAME = 'CLARK' then dbms_output.put_line('克拉克' || ' - ' || v_emp.JOB); else dbms_output.put_line(v_emp.ENAME || ' - ' || v_emp.JOB); end if; --循环结束 end loop; --关闭游标变量c_emps close c_emps; end PRO_LOOP_EMP;
create or replace procedure PRO_FOR_EMP is --让游标变量c_emps指向一个动态select查询的结果集 cursor c_emps is select * from emp where rownum <= 10; begin --循环开始 for e in c_emps loop if e.ENAME = 'JACK' then dbms_output.put_line('杰克' || ' - ' || e.JOB); elsif e.ENAME = 'CLARK' then dbms_output.put_line('克拉克' || ' - ' || e.JOB); else dbms_output.put_line(e.ENAME || ' - ' || e.JOB); end if; --循环结束 end loop; end PRO_FOR_EMP;
调用存储过程:
begin pro_loop_emp; end;
begin PRO_FOR_EMP; end;