加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

ORACLE For循环迭代SELECT结果集,并对数据进行操作...

(2014-01-07 15:38:16)
标签:

it

分类: ORACLE

DECLARE 
       ----定义游标
       cursor cur is select FWID as IDS,MYLQJF AS MYLQJFS,BZ1 AS BZ1S,REGEXP_SUBSTR(MYLQJF,'[0-9]+') NEW_MYLQJFS ,REGEXP_SUBSTR(MYLQJF,'[^x00-xff]+') NEW_BZ1S  from HR_RCXM_YGPLX_SERVICE ;
       IDS VARCHAR(32);   ----ID 主键
       MYLQJFS VARCHAR(32); ----每月领取经费
       BZ1S VARCHAR(32);      ----币种
       NEW_MYLQJFS VARCHAR(32); ---新每月领取经费(通过现有每月领取经费截取数字)
       NEW_BZ1S VARCHAR(32);    ---新要更新的币种(通过现有每月领取经费截取汉子)
       MaxCount number;
       begin
         select count(*) into MaxCount from HR_RCXM_YGPLX_SERVICE; ---查询数据总数用于迭代
        open cur;
         DBMS_OUTPUT.ENABLE(1000000);  ----设置打印,不如会报错
      for i in 1..MaxCount loop  ----迭代开始
          FETCH cur INTO IDS,MYLQJFS,BZ1S,NEW_MYLQJFS,NEW_BZ1S;  --抓取迭代数据
            
            IF (BZ1S IS NULL and NEW_MYLQJFS is not null) THEN ---如果币种为空并且 每月领取经费不为空
              UPDATE HR_RCXM_YGPLX_SERVICE A SET A.MYLQJF =  NEW_MYLQJFS ,A.BZ1 =  NEW_BZ1S  WHERE A.FWID = IDS ;
              COMMIT;
             elsif (BZ1S IS NOT NULL AND NEW_MYLQJFS is not null )  THEN
              UPDATE HR_RCXM_YGPLX_SERVICE A SET A.MYLQJF =  NEW_MYLQJFS   WHERE A.FWID =   IDS ; 
              COMMIT;        
            END IF;
      end loop;      
    CLOSE cur;
END;

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有