当前位置:Gxlcms > 数据库问题 > Oracle游标示例

Oracle游标示例

时间:2021-07-01 10:21:17 帮助过:2人阅读

声明游标;CURSOR cursor_name IS select_statement --For 循环游标 --(1)定义游标 --(2)定义游标变量 --(3)使用for循环来使用这个游标 declare --类型定义 cursor c_job is select empno,ename,job,sal from emp where job=MANAGER; --定义一个游标变量v_cinfo c_emp%ROWTYPE ,该类型为游标c_emp中的一行数据类型 c_row c_job%rowtype; begin for c_row in c_job loop dbms_output.put_line(c_row.empno||-||c_row.ename||-||c_row.job||-||c_row.sal); end loop; end;

实际工作中的例子:

declare 
       v_temp NUMBER;           --定义变量
       v_part_id VARCHAR2(20);  --定义变量
       cursor c_job            --定义游标
       is
       SELECT DEPT_ID,DEPT_CODE,DEPT_TYPE 
       from PUB_DEPART_INFO
       ORDER BY DEPT_ID;
       c_row c_job%rowtype;     --定义变量c_row,类型为游标c_job中的一行数据
begin
       open c_job;              --打开游标
         
         loop                            --开始循环
           fetch c_job into c_row;      --读取一行数据
           exit when c_job%notfound;    --数据为空时退出(即:循环完成时)
              if c_row.DEPT_CODE is NULL then   --字段数据的调用方式c_row.DEPT_CODE,其中DEPT_CODE为数据库中的列名
                 IF c_row.DEPT_TYPE = 1 then
                      v_temp := 0;
                      select Max(DEPT_CODE)+1 into v_part_id from  PUB_DEPART_INFO WHERE DEPT_TYPE = 1;
                                        
                      update PUB_DEPART_INFO set DEPT_CODE = v_part_id
                      where DEPT_ID = c_row.DEPT_ID;

                  ELSE
                      v_temp := v_temp + 1;
                      IF v_temp < 10 THEN
                           update PUB_DEPART_INFO set DEPT_CODE = (v_part_id || 0000 || v_temp)
                           where DEPT_ID = c_row.DEPT_ID;
                      ELSE
                           update PUB_DEPART_INFO set DEPT_CODE = (v_part_id || 000 || v_temp)
                           where DEPT_ID = c_row.DEPT_ID;
                      END IF;
                   END IF;
              end if;
         end loop;                      --结束循环
      close c_job;                       --关闭游标
end;

 

Oracle游标示例

标签:

人气教程排行