ORACLE循环(FOR)判断当前数字是否为最大数字

DECLARE
/*
功能说明:入库顺序率判断;循环判断当前下线工单号是否是顺序最大工单号,如果是就更新IS_ORDER为1,如果不是就不更新。
创建人:*****
创建时间:*********

*/ 
              A NUMBER ;--当日工单最大数
              B NUMBER ;--顺序号
              C NUMBER ;--最大数值
              D NUMBER ;--循环递减顺序号
                            
BEGIN   
          SELECT MAX(RN) INTO A FROM PRODU_F_GDJHRK WHERE TO_CHAR(SCHEDULED_DATE,'YYYYMMDD')='20210617';
		  --判断当前日期最大序号,并赋值给A,用作最外层循环数量
          B:=1;--顺序号初始化为1;
FOR I IN 1..A LOOP
--最外层循环
         SELECT GDXH INTO C FROM PRODU_F_GDJHRK WHERE RN=B;
		 --将当前顺序号的工单号赋值给C
         D:=B;--循环递减顺序号初始化为当前顺序号
    FOR I IN 1..B LOOP
--第二层循环          
            SELECT (CASE WHEN MAX(GDXH)>C THEN MAX(GDXH) ELSE C END) INTO C
			--将当前顺序号数值和前一顺序号数值进行比对,将比对后的最大工单号赋值给C
             FROM (
                   SELECT GDXH FROM PRODU_F_GDJHRK WHERE RN=D
				   --当前顺序号
                       UNION ALL
                   SELECT GDXH FROM PRODU_F_GDJHRK WHERE RN=D-1
				   --前一顺序号
				   ); 
         D:=D-1;--循环递减顺序号递减 
    END LOOP;--结束第二层循环      
          UPDATE PRODU_F_GDJHRK SET IS_ORDER=1 WHERE RN=B AND GDXH=C;--将当前工单号为最大工单号的顺序率更新为1,
          B:=B+1;--顺序号递加             
 END LOOP;--结束最外层循环
 END ;          
          
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值