oracle 游标使用根据工龄更新年假

原创 2016年06月01日 15:49:46
create or replace procedure UPDATE_CMCC_WORK_AGE is
  --ID
  workageID   CMCC_WORK_AGE.Work_Age_Id%type;
  --工龄
  workageYear CMCC_WORK_AGE.Work_Age%type;
  --是否劳模
  isModelWorker Cmcc_Work_Age.Is_Model_Worker%type;
  --定义游标(简单的说就是一个可以遍历的结果集)
  cursor v_workage is
    select WORK_AGE_ID, WORK_AGE,Is_Model_Worker
      from CMCC_WORK_AGE;
    -- where CMCC_WORK_AGE.WORK_AGE != '0';
begin
  --遍历游标处理后更新到表。遍历游标有几种方法,用loop语句是其中比较直观的一种。
  --每年年初凌晨执行,工龄加1
  update CMCC_WORK_AGE  set work_age = work_age + 1;
  commit;
  open v_workage;
  LOOP
    fetch v_workage
      into workageID, workageYear,isModelWorker;
    exit when v_workage%notfound;
    --Dbms_Output.put_line('工龄:' || workageID);


    --工龄少于5年非劳模
    if (workageYear < 5 and isModelWorker=0) then
      update CMCC_WORK_AGE
         set HOLIDAY_NUM = '5'
       where Work_Age_Id = workageID;
       commit;
     --工龄少于5年劳模
    elsif (workageYear < 5 and isModelWorker=1) then
      update CMCC_WORK_AGE
         set HOLIDAY_NUM = '10'
       where Work_Age_Id = workageID;
       commit;
    elsif (workageYear >= 5 and workageYear < 10 and isModelWorker=0) then
      update CMCC_WORK_AGE
         set HOLIDAY_NUM = '10'
       where Work_Age_Id = workageID;
       commit;
    elsif (workageYear >= 5 and workageYear < 10 and isModelWorker=1) then
      update CMCC_WORK_AGE
         set HOLIDAY_NUM = '15'
       where Work_Age_Id = workageID;
       commit;
    elsif (workageYear >= 10 and workageYear < 15 and isModelWorker=0) then
      update CMCC_WORK_AGE
         set HOLIDAY_NUM = '12'
       where Work_Age_Id = workageID;
       commit;
        elsif (workageYear >= 10 and workageYear < 15 and isModelWorker=1) then
      update CMCC_WORK_AGE
         set HOLIDAY_NUM = '17'
       where Work_Age_Id = workageID;
       commit;
    elsif (workageYear >= 15 and workageYear < 20 and isModelWorker=0) then
      update CMCC_WORK_AGE
         set HOLIDAY_NUM = '15'
       where Work_Age_Id = workageID;
       commit;
     elsif (workageYear >= 15 and workageYear < 20 and isModelWorker=1) then
      update CMCC_WORK_AGE
         set HOLIDAY_NUM = '20'
       where Work_Age_Id = workageID;
       commit;
    elsif (workageYear >= 20  and isModelWorker=0)  then
      update CMCC_WORK_AGE
         set HOLIDAY_NUM = '20'
       where Work_Age_Id = workageID;
       commit;
     else
       update CMCC_WORK_AGE
         set HOLIDAY_NUM = '25'
       where Work_Age_Id = workageID;
       commit;
    end if;


  end loop;
  close v_workage;
END;
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Oracle游标使用(极好)

  • 2016-01-09 08:56
  • 397KB
  • 下载

oracle游标使用大全3

【ORACLE】大数据快速更新(游标分批提交)

--【避免回滚段过大】 --删除索引,最后恢复索引 --分批插入 DECLARE CURSOR c1 IS SELECT ROWID row_id FROM t...

oracle游标使用大全1.txt

Oracle 游标 使用大全

  • 2010-04-11 13:00
  • 13KB
  • 下载

oracle 存储过程,游标、异常处理,集合使用入门详解

我们在进行pl/sql编程时打交道最多的就是存储过程了。存储过程的结构是非常的简单的,我们在这里除了学习存储过程的基本结构外,还会学习编写存储过程时相关的一些实用的知识。如:游标的处理,异常的处理,集...

oracle游标的使用

  • 2008-11-19 23:48
  • 44KB
  • 下载

Oracle 中使用 fetch bulk collect into 批量效率的读取游标数据

转自:http://www.poluoluo.com/jzxy/201109/142609.html

oracle 游标的使用

内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)