oracle - oracle 存储过程在另一个表的帮助下更新一个表
问题描述
TABLE A : name empid activeind
TABLE B : name empid activeind
更新表 A 基于表 B 比较empid
使用 Oracle 存储过程的表
解决方案
这是一种选择。
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
?没有它,您将为表中不存在的所有行设置name
和activeid
值。null
a.empid
b
推荐阅读
- javascript - 在我选择一个值后,更改问题仍然存在
- python - 从 Tensorflow 1.8.0 升级到 1.11.0 后,在每个 epoch 记录 OutOfRangeError
- node.js - Node.js 使用 Streams 更新存储在 S3 上的文件
- r - 如何在此数据框中添加具有 dplyr 的 mutate 函数的列,以计算与第 0 天相比的重量差异?
- android - 以编程方式重新启动蓝牙
- python - 从字符串中提取单词,知道单词中一个字符的索引(python)
- haskell - 如何为 sum 类型编写镜头
- javascript - 使用 Ajax 在 Django 中发送表单数据
- robotframework - 如何在 Robot 框架中访问全局变量
- google-cloud-platform - NestedValueProvider 问题