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

  • 2011年10月26日 20:05
  • 3KB
  • 下载

如何使用excel计算工龄

今天一位搞财务的mm问我excel计算工龄的问题,我想了想,还真不会啊。搞测试的,写case,报进度,统计bug一般都是用excel,还真没弄过计算工龄日期生日之类的。 她的要求是:   ...

oracle游标使用大全1.txt

  • 2011年10月26日 20:00
  • 4KB
  • 下载

oracle游标的使用

  • 2008年11月19日 23:48
  • 45KB
  • 下载

Oracle 游标使用全解

原文 Oracle 游标使用全解 这个文档几乎包含了oracle游标使用的方方面面,全部通过了测试 -- 声明游标;CURSOR cursor_name IS s...

Oracle游标使用详解

  • 2011年07月06日 10:21
  • 4KB
  • 下载

ORACLE游标(cursor)的使用

--声明游标; --CURSOR cursor_name IS statement --For 循环游标 --(1)定义游标 --(2)定义游标变量 --(3)使用for循环来使用这个游标 DEC...

Oracle 游标使用大全.txt

  • 2012年05月27日 05:35
  • 15KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:oracle 游标使用根据工龄更新年假
举报原因:
原因补充:

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