【问题标题】:Update query if statement for Oracle为 Oracle 更新查询 if 语句
【发布时间】:2015-04-19 07:28:38
【问题描述】:

我需要更新我的 oracle 表中新创建的列。为此,我需要使用行中的现有值来决定如何填充此列,我收到错误:

java.lang.NullPointerException -> See Debug Output for details

这是我的查询:

UPDATE
    SCHEMA_NAME.TABLE_NAME
SET
    OCO= IF CO= 'Y' AND COM='Y' THEN 
{
    'Y'
} ELSE
{
    'N'
}
END IF;

对语法有什么建议吗?

【问题讨论】:

    标签: sql oracle sql-update case conditional-statements


    【解决方案1】:

    您可以在SET 子句中使用CASE 表达式。

    例如,

    UPDATE table
    SET schema.column =  CASE
                            WHEN CO= 'Y' AND COM='Y' THEN
                              'Y'
                            ELSE
                              'N'
                         END
    

    【讨论】:

    • 如果 'CO' 或 'COM' 的值在同一个语句中被更新,case 块会考虑 'CO' 和 'COM' 列的旧值还是更新后的值?
    • @gkapagunta Oracle 遵循 ACID 属性进行事务处理。阅读有关它的更多信息,您将在问题本身中找到答案。顺便说一句,答案是否定的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-06
    相关资源
    最近更新 更多