Oracle存储过程中loop、for循环的用法

基表数据:
Oracle存储过程中loop、for循环的用法_第1张图片

创建存储过程:

Oracle存储过程中loop、for循环的用法_第2张图片

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;

调用存储过程:

Oracle存储过程中loop、for循环的用法_第3张图片

Oracle存储过程中loop、for循环的用法_第4张图片

begin
  pro_loop_emp;
end;
begin
  PRO_FOR_EMP;
end;

你可能感兴趣的:(Oracle,oracle,sql)