2

我正在使用 oracle 编写存储过程。我是 oracle 和存储过程的新手,但我想做的事情似乎相当简单,但我遇到了麻烦。

我有 2 张桌子BATCH_ISABATCH_TEMP

临时表是使用来自BATCH_ISA以及其他一些表的记录创建的。BATCH_ISA在记录成功移入表后,我需要将表中的标志从“Y”更新为“N” BATCH_TEMP

我正在尝试对在两个表中都找到BATCH_ISAISA_KEY字段的所有记录进行更新,并将标志设置为“N”

我应该使用什么基本更新语句?

4

1 回答 1

1
-- SET EVERYTHING TO 'N' FIRST:
UPDATE BATCH_ISA 
SET
    FLAG = 'N';

-- NOW UPDATE ONLY MATCHED ROWS TO 'Y':
UPDATE BATCH_ISA 
SET
    FLAG = 'Y' 
WHERE
    EXISTS (
        SELECT * FROM BATCH_TEMP
        WHERE BATCH_ISA.ISA_KEY = BATCH_TEMP.ISA_KEY
);

COMMIT;

我在第一次更新后删除了提交,但如果有很多行,您可以使用它来节省重做日志开销。

于 2012-11-19T19:48:29.977 回答