【问题标题】:PL/SQL: ORA-00936: missing expression in update query using case AND conditionPL/SQL: ORA-00936: 使用 case AND 条件的更新查询中缺少表达式
【发布时间】:2023-03-07 00:39:01
【问题描述】:

我有以下查询,我使用 case 语句使用更新查询。我在过程中运行这个查询。我在更新查询的第三行中收到错误PL/SQL: ORA-00936: missing expression in update query using case statement。我想在我的第一个更新查询案例中使用&& 条件,但它失败了。这个过程非常大,这就是为什么我没有在我的问题中提到。

update
CAPTURING set LAST_TASK_ID= 
CASE WHEN (SELECT MAX(ID) from TEMP_SOAP_MONITORING AND LAST_TASK_ID ) IS NULL THEN SELECT MAX(ID) from SOAP_MONITORING@FONIC_RETAIL 
CASE WHEN (SELECT MAX(ID) from TEMP_SOAP_MONITORING) IS NULL THEN LAST_TASK_ID + 1 ELSE (SELECT MAX(ID) from TEMP_SOAP_MONITORING) END,
CAPTURING_DATE = CURRENT_TIMESTAMP, LAST_CAPTURED_DATE = LAST_CAPT_DATE where DB_TABLE='TEMP_SOAP_MONITORING';

【问题讨论】:

    标签: oracle stored-procedures sql-update case


    【解决方案1】:

    你的条件和检查都纠结在一起:我已经解开它们去做我认为你想要完成的事情。

    UPDATE CAPTURING 
    SET 
        LAST_TASK_ID = CASE 
            WHEN (SELECT MAX(ID) from TEMP_SOAP_MONITORING) IS NULL AND LAST_TASK_ID IS NULL THEN (SELECT MAX(ID) FROM SOAP_MONITORING@FONIC_RETAIL)
            WHEN (SELECT MAX(ID) from TEMP_SOAP_MONITORING) IS NULL THEN LAST_TASK_ID + 1 
            ELSE (SELECT MAX(ID) from TEMP_SOAP_MONITORING) END,
        CAPTURING_DATE = CURRENT_TIMESTAMP, 
        LAST_CAPTURED_DATE = LAST_CAPT_DATE 
    WHERE DB_TABLE = 'TEMP_SOAP_MONITORING';
    

    【讨论】:

      猜你喜欢
      • 2013-02-15
      • 1970-01-01
      • 2021-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多