使用if语句PL / SQL更新表

时间:2010-12-23 18:51:57

标签: 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;

但这不起作用。我也试过

IF EXISTS(SELECT complete_date FROM task_table WHERE task_id = 1)

没有运气。

2 个答案:

答案 0 :(得分:8)

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

假设这是你的任务:

  

“如果对于id,则为complete_date的值   1为NULL,用XXX更新它。否则将其设置为null“。

你可以跑......

Update task_table
  set complete_date = nvl2(complete_date,NULL, <**your date**>)
  where task_id = 1;

这只会更新那些带有新日期的complete_date为空的记录。

答案 1 :(得分:0)

这部分的目的是什么?

IF ((SELECT complete_date FROM task_table WHERE task_id = 1) IS NULL)

是否要查找是否存在complete_date为null且task_id = 1的行?

或者是否检查是否没有task_id = 1的行?