【问题标题】:Oracle Update statement with if conditions带有 if 条件的 Oracle 更新语句
【发布时间】:2015-03-06 09:06:27
【问题描述】:

我正在尝试将三个更新语句合并为一个。

"UPDATE DOT_WORKS SET START_DATE = :StartDate WHERE ID = :WorksId and END_DATE IS NULL;"
"UPDATE DOT_WORKS SET WORKS_TYPE = :WorksType WHERE ID = WorksId and WORKS_GROUP = :WorksGroup;"
"UPDATE DOT_WORKS SET WORKS_CONNECTION = :WorksConn WHERE ID = WorksId and WORKS_PLACE = :WorksPlace;"

我想知道是否有办法做到这一点。 我尝试这样做的原因是将调用保存到数据库。调用 db 一次比调用三次效率更高。

谢谢!

【问题讨论】:

    标签: oracle conditional-statements update-statement


    【解决方案1】:
    UPDATE DOT_WORKS 
    SET START_DATE = case when END_DATE IS NULL then :StartDate else START_DATE end,
        WORKS_TYPE = case when WORKS_GROUP = :WorksGroup then :WorksType else WORKS_TYPE end,
        WORKS_CONNECTION = case when WORKS_PLACE = :WorksPlace then :WorksConn else WORKS_CONNECTION end
    WHERE ID = :WorksId 
    and 
    (
      END_DATE IS NULL OR
      WORKS_GROUP = :WorksGroup OR
      WORKS_PLACE = :WorksPlace
    )
    

    【讨论】:

    • 看起来很棒!非常感谢。
    猜你喜欢
    • 2014-02-08
    • 1970-01-01
    • 2021-06-19
    • 2017-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    相关资源
    最近更新 更多