开发者

Update table with if statement PL/SQL

I am trying to do something like this but am having trouble putting it into oracle coding.

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;

But this does not work. I also tried

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

with no luck.


I don't think you'd need the procedural block if your actual logic is like the one above.

Assuming this is your task:

"if the value of complete_date for id 1 is NULL, update it with XXX. Otherwise set it to null".

You could just run ...

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

This will only update those records where the complete_date is null with your new date.


What is the intention of this part?

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

Is it to find if there are rows where complete_date is null and task_id = 1?

Or is it to check if there are no rows where task_id = 1?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜