PL/SQL: ORA-00936: 使用 case AND 条件的更新查询中缺少表达式
PL/SQL: ORA-00936: missing expression in update query using case AND condition
我有以下查询,我正在使用 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';
你的条件和支票都乱七八糟:我已经把它们解开来做我认为你正在努力完成的事情。
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';
我有以下查询,我正在使用 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';
你的条件和支票都乱七八糟:我已经把它们解开来做我认为你正在努力完成的事情。
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';