Oracle的游标使用小结

最近工作中常常需要使用游标,一般在循环或者需要一条条操作数据的场景下使用。
下面总结两种常用的游标使用方法:

  1. FOR 循环游标
  2. FETCH游标

1.FOR 循环游标

  • 定义游标
  • 定义游标变量
  • 使用for循环来使用这个游标
declare
       --类型定义
       cursor c_job
       is
       select empno,ename,job,sal
       from emp
       where job='MANAGER';
       --定义一个游标变量v_row c_job%ROWTYPE ,该类型为游标c_job中的一行数据类型
       v_row c_job%rowtype;
begin
       for v_row in c_job loop
         dbms_output.put_line(v_row.empno||'-'||v_row.ename||'-'||v_row.job||'-'||v_row.sal);
       end loop;
end;
/

2.Fetch游标

  • 注意:使用的时候必须要明确的打开和关闭
declare 
       --类型定义
       cursor c_job
       is
       select empno,ename,job,sal
       from emp
       where job='MANAGER';
       --定义一个游标变量
       v_row c_job%rowtype;
begin
       open c_job;
         loop
           --提取一行数据到v_row
           fetch c_job into v_row;
           --判读是否提取到值,没取到值就退出
           --取到值c_job%notfound 是false 
           --取不到值c_job%notfound 是true
            exit when c_job%notfound;
            dbms_output.put_line(v_row.empno||'-'||v_row.ename||'-'||v_row.job||'-'||v_row.sal);
         end loop;
       --关闭游标
      close c_job;
end;
/

其中:

  • %TYPE说明
    为了使一个变量的数据类型与另一个已经定义了的变量(尤其是表的某一列)的数据类型相一致

  • %ROWTYPE说明
    如果一个表有较多的列,使用%ROWTYPE来定义一个表示表中一行记录的变量。

原文地址:https://www.cnblogs.com/laiyaling/p/11889657.html