使用if语句PL/SQL更新表

Mat*_*att 3 oracle plsql if-statement

我正在尝试做这样的事情,但我很难将它放入oracle编码.

BEGIN
IF ((SELECT complete_date FROM task_table WHERE task_id = 1) IS NULL)
THEN
 UPDATE task_table SET complete_date = //somedate WHERE task_id = 1;
ELSE
 UPDATE task_table SET complete_date = NULL;
END IF;
END;
Run Code Online (Sandbox Code Playgroud)

但这不起作用.我也试过了

IF EXISTS(SELECT complete_date FROM task_table WHERE task_id = 1)
Run Code Online (Sandbox Code Playgroud)

没有运气.

Raj*_*thi 8

如果您的实际逻辑与上面的逻辑类似,我认为您不需要程序块.

假设这是你的任务:

"如果id为1的complete_date的值为NULL,则用XXX更新它.否则将其设置为null".

你可以跑......

Update task_table
  set complete_date = nvl2(complete_date,NULL, <**your date**>)
  where task_id = 1;
Run Code Online (Sandbox Code Playgroud)

这将仅更新complete_date为新日期的那些记录.