【问题标题】:basic oracle update statement基本的 oracle 更新语句
【发布时间】:2012-11-19 19:45:37
【问题描述】:

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

我有 2 张桌子 BATCH_ISABATCH_TEMP

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

我正在尝试更新BATCH_ISA 中的所有记录,其中ISA_KEY 字段在两个表中都存在,并将标志设置为“N”

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

【问题讨论】:

    标签: sql oracle stored-procedures


    【解决方案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;
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多