首页 > 解决方案 > oracle 存储过程在另一个表的帮助下更新一个表

问题描述

TABLE A  : name empid activeind 
TABLE B  : name empid activeind 

更新表 A 基于表 B 比较empid使用 Oracle 存储过程的表

标签: oraclestored-proceduresplsql

解决方案


这是一种选择。

create or replace procedure p_upd is
begin
  merge into a
  using b
  on (b.empid = a.empid)
  when matched then update set a.name = b.name,
                               a.activeind = b.activeind;
end;
/

[编辑]根据您的评论:您使用了错误的语法。UPDATE应该

UPDATE a
   SET (a.name, a.activeind) =
          (SELECT b.name, b.activeind
             FROM b
            WHERE b.empid = a.empid)
 WHERE EXISTS
          (SELECT NULL
             FROM b
            WHERE b.empid = a.empid);

为什么exists?没有它,您将为表中不存在的所有行设置nameactiveid值。nulla.empidb


推荐阅读