Обновить таблицу с помощью оператора PL / SQL - PullRequest
3 голосов
/ 23 декабря 2010

Я пытаюсь сделать что-то подобное, но у меня возникают проблемы с переводом кода в оракул.

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 ]

8 голосов
/ 23 декабря 2010

Не думаю, что вам понадобится процедурный блок, если ваша фактическая логика похожа на приведенную выше.

Предполагается, что это ваша задача:

"если значениедля complete_date для идентификатора 1 установлено значение NULL, обновите его с помощью XXX. В противном случае установите для него значение null ".

Вы можете просто запустить ...

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

Это обновит только тезаписывает, где полная_дата равна нулю с вашей новой датой.

0 голосов
/ 28 декабря 2010

Какова цель этой части?

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

Можно ли найти строки с нулевым значением complete_date и значением task_id = 1?

Или это проверить, нет ли строк, где task_id = 1?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...