基表数据:
创建存储过程:
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;