plsql用for循环批量从一表取数修改另一表的过程

用update语句修改单个或固定的多个倒是问题不大,但大批量的对应修改就不好办,需要用循环修改。

前提:表jxcgoodslist_dayj中的lb4m的名称不对,需要用goodscat中的catcname去修改,

           jxcgoodslist_dayj表中的字段 lb4与goodscat中的字段catcode一致。

于是用存储过程来解决,比较方便,过程如下:

create or replace procedure p_updatelbm is      -- 创建修改类别名称的过程
begin
  for i in (select catcode, catcname from goodscat where catcode like '____') loop    -- for循环取数,条件是catcode是4位数,取类别代码与名称
    update jxcgoodslist_dayj set lbm4 = i.catcname where lb4 = i.catcode;      -- update语句修改jxcgoodslist_dayj表中的lbm4字段,条件是类别代码相等
    commit;        -- 自动提交
  end loop;       -- 循环结束
end p_updatelbm;

在命令窗口执行语句:

exec  p_updatelbm;

查询结果正确。同样的道理把lb8m和lb6m都进行了修改。

select * from jxcgoodslist_dayj

 

posted @ 2020-11-10 16:48  蜕变大哥  阅读(967)  评论(0)    收藏  举报