为 Oracle 更新查询 if 语句

Posted

技术标签:

【中文标题】为 Oracle 更新查询 if 语句【英文标题】:Update query if statement for Oracle 【发布时间】: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;

对语法有什么建议吗?

【问题讨论】:

【参考方案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 属性进行事务处理。阅读有关它的更多信息,您将在问题本身中找到答案。顺便说一句,答案是否定的。

以上是关于为 Oracle 更新查询 if 语句的主要内容,如果未能解决你的问题,请参考以下文章

oracle 存储过程中 如果用if语句判断一条查询语句的结果集是不是为空

oracle 中SQL语句查询的问题,分类统计汇总为和

oracle PL/SQL语句题目求教!

带有 IF 语句的 PL/SQL Oracle 查询

oracle查询修改删除插入语句

oracle 里SQL语句UNION怎么用