我正在尝试做类似这样的事情,但我很难将其用于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)
没有运气。
答案 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的行?