oracle带游标的存储过程

create or replace procedure XS_TEST_ADD19
is
  bachelor_edu varchar2(2000);
  new_bachelor_edu varchar2(2000);
  aa varchar2(2000);
  bb varchar2(2000);
  edu_length int;
  str_bachelor varchar2(2000);
  cursor curTestAlumniDep19 is

      select *   from   dcp_apps.TEST_alumni_user tau       
       where
       1=1 and substr(tau.bachelor_edu,1,1)='从'  and  substr(tau.bachelor_edu,2,1)  in('9','8','7','6','5','4')
        and substr(tau.bachelor_edu,5,1)='到' and substr(tau.bachelor_edu,6,1) in ('9','8','7','6','5','4');
    --校友用户类型
    rec_curTestAlumniDep19 curTestAlumniDep19%rowtype;
begin
   --判断游标是否被打开,如果已经打开,首先关闭
  if curTestAlumniDep19%isopen then
    --关闭游标
    close curTestAlumniDep19;
  end if;
  --打开游标
  open curTestAlumniDep19;
  --进行循环
    loop
     --打开游标里的一条记录,赋到游标变量里
    fetch curTestAlumniDep19
      into rec_curTestAlumniDep19;
    --判断游标里是否还有记录,如果没有记录,关闭游标,退出循环
    if curTestAlumniDep19%notfound then
      close curTestAlumniDep19;
      exit;
    else
        bachelor_edu:=rec_curTestAlumniDep19.Bachelor_Edu;
        if(bachelor_edu is not null)then
         --判断
         bachelor_edu:=trim(bachelor_edu);
         edu_length:=length(bachelor_edu);
         new_bachelor_edu:=substr(bachelor_edu,1,1);
         aa:=substr(bachelor_edu,2,4);
         bb:=substr(bachelor_edu,6,edu_length);
         str_bachelor:=new_bachelor_edu||'19'||aa||'19'||bb;
         update dcp_apps.TEST_alumni_user tau set tau.bachelor_edu=str_bachelor where tau.id=rec_curTestAlumniDep19.id;
       
        end if;
       
       
    end if;
         
      commit;

    end loop;
exception
  when others then
    rollback;
end XS_TEST_ADD19;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值