我有两个表,doc(在database1中)和docs(在database2中)。使用以下关键字段:
doc: KEY,OLD_KEY
docs: RKEY
现在doc.OLD_KEY = docs.RKEY。 我正在检查doc.OLD_KEY = docs.RKEY的位置并设置docs.RKEY = doc.KEY。
我已经编写了以下语法,但是我无法成功运行,因为我以前没有使用for循环。
DECLARE
OLD_KEY_var NUMBER(10);
KEY_var NUMBER(38);
BEGIN
FOR dc.KEY IN (
SELECT dc.KEY,dc.OLD_KEY INTO KEY_var,OLD_KEY_var
FROM user.database2 docs,database1 dc
where docs.RKEY=dc.OLD_KEY
) LOOP
UPDATE user.database2 docs SET docs.RKEY = KEY_var where docs.RKEY=OLD_KEY_var;
END LOOP;
END;
我有一个联系并在表之间授予权限,我正在
答案 0 :(得分:0)
此操作不需要变量,您可以按如下方式执行此操作:
BEGIN
FOR dc IN (SELECT dc.KEY, dc.OLD_KEY
FROM user.database2 docs, database1 dc
where docs.RKEY = dc.OLD_KEY) LOOP
UPDATE user.database2 docs
SET docs.RKEY = dc.KEY
where docs.RKEY = dc.OLD_KEY;
END LOOP;
END;
但是xQbert提供的选项看起来好多了!
答案 1 :(得分:0)
不需要循环或PL / SQL块。像这样的单一更新就可以了。
UPDATE user.database2
docs SET
docs.RKEY = ( select KEY FROM database1 dc
where
docs.RKEY=dc.OLD_KEY
);
这假设每个键只返回1行,否则您必须在内部选择中选择适合您数据的MIN(key)
或MAX(key)