Oracle - 更新期间是否可以在 case 语句中使用 "set"值,如下所示?

标签 oracle

是否可以在更新期间在 case 语句中“设置”值,如下所示?

UPDATE TABLE1
  CASE WHEN COL1 = 'A' THEN SET COL2 = 10, COL3 = 20, COL4 = 30
       WHEN COL1 IN ('B','N') THEN SET COL2 = 1, COL3 = 5, COL4 = 7
       WHEN COL1 = 'D' THEN SET COL2 = 11, COL3 = 13, COL4 = 17
       ELSE SET COL2 = 0, COL3 = 0, COL4 = 0
  END;

最佳答案

相应的有效语法是这样的。

UPDATE TABLE1 SET
  COL2 = (CASE WHEN COL1 = 'A' THEN 10
               WHEN COL1 IN ('B','N') THEN 1
               WHEN COL1 = 'D' THEN 11
               ELSE 0
          END), 
  COL3 = (CASE WHEN COL1 = 'A' THEN 20
               WHEN COL1 IN ('B','N') THEN 5
               WHEN COL1 = 'D' THEN 13
               ELSE 0
          END), 
  COL4 = (CASE WHEN COL1 = 'A' THEN 30
               WHEN COL1 IN ('B','N') THEN 7
               WHEN COL1 = 'D' THEN 17
               ELSE 0
          END);

关于Oracle - 更新期间是否可以在 case 语句中使用 "set"值,如下所示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28483481/

相关文章:

sql - 从包文件中提取包名称和注释

java - 需要一种更有效的方法将 JDBC 结果集转换为 JSON 数组

oracle - VS Code Oracle Developer 在结果窗口中隐藏 SQL

Oracle --> Postgres 查询

database - 错误: ORA-12560: TNS:protocol adapter error

c# - 处理 BLOB 数据的 Web 服务

oracle - JDBC - Oracle ArrayIndexOutOfBoundsException

php - 如何学习将 Oracle DB 与 PHP 结合使用?

oracle - Oracle 包级变量的范围

oracle - 导出 Oracle 数据库,将其导入到其他用户,存储过程不起作用