首页 > 数据库技术 > 详细

plsql里用游标与if语句写存储过程比较字段大小的方法

时间:2021-03-29 15:37:11      阅读:29      评论:0      收藏:0      [点我收藏+]

运用场景

我有一张很多商品的四周销售表,

表的字段有商品代码、第一周、第二周、第三周、第四周的销售,现在想把这四周的最大销量找出来。

方法:

第一步,先创建一个字段有:商品代码、最大值这两列的表;

第二步,写存储过程,用loop循环if判断写入刚创建的表;

过程如下:

create or replace procedure P_yryp_zxsb_max is  --字段比大小
begin
  delete from yryp_zxsb_max;  --清除创建表中所有记录
  commit;
  insert into yryp_zxsb_max  --插入要查的所有商品代码
  select gbbarcode,0,0 from luckman@house;
  commit;
  declare                              --申明变量
  v_dm  yryp_zxsb.dm%type;
  v_sl1 yryp_zxsb.sl1%type;
  v_sl2 yryp_zxsb.sl1%type;
  v_sl3 yryp_zxsb.sl1%type;
  v_sl4 yryp_zxsb.sl1%type;
  cursor c_yryp is select dm,sl1,sl2,sl3,sl4 from yryp_zxsb;   --给游标赋值
  begin
    open c_yryp;      --打开游标
    loop     --循环开始
      fetch c_yryp into v_dm,v_sl1,v_sl2,v_sl3,v_sl4;    --给变量赋值
      exit when c_yryp%notfound;                  --当游标找不到数时退出
      if v_sl1>v_sl2 then               --第一次判断1与2的大小
        update  yryp_zxsb_max set hmax=v_sl1 where yryp_zxsb_max.dm=v_dm;    --如果1大,把1放进创建的表
      elsif
        v_sl2>v_sl3 then          --如果2大就与3比
        update  yryp_zxsb_max set hmax=v_sl2 where yryp_zxsb_max.dm=v_dm;   --如果2大,把2放进创建的表
      elsif
        v_sl3>v_sl4 then          --如果3大就与4比
        update  yryp_zxsb_max set hmax=v_sl3 where yryp_zxsb_max.dm=v_dm;  --如果3大,把3放进创建的表
      else                  --否则4大
        update  yryp_zxsb_max set hmax=v_sl4 where yryp_zxsb_max.dm=v_dm; --把4放进创建的表
      end if;      --if语句结束
      end loop;    --循环结束
      close c_yryp;   --关闭游标
      commit;
  end;
end P_yryp_zxsb_max;

检验:

select t.dm,t.sl1,t.sl2,t.sl3,t.sl4,w.hmax
 from yryp_zxsb t,yryp_zxsb_max w where t.dm=w.dm
技术分享图片

 

plsql里用游标与if语句写存储过程比较字段大小的方法

原文:https://www.cnblogs.com/sb5168/p/14592318.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!