ORA-00936: отсутствует выражение. почему я получаю это сообщение?
Я имею в виду, я пытаюсь все, используя begin
а также end
но это не работает. Как я могу это исправить?
select
case
when exists
(select ORG_UNIT_NAME from aaa.bbb
where ORG_UNIT_NAME ='ccc' and created_Date=to_date('01/11/2012','dd/mm/yyyy') )
then
update aaa.bbb
set PROJECT_QUOTA=555 where ORG_UNIT_NAME ='ccc' and created_Date=to_date('01/11/2012','dd/mm/yyyy')
else
'asd'
end as exist_
from dual
Если я использую 'DDD' после этого, вместо обновления это работает, но почему обновление не работает.
2 ответа
В SQL CASE
Конструкция не является структурой управления потоком. Подумайте об этом обобщенной версии COALESCE()
, Вы не можете соответствовать полный UPDATE
запрос внутри!
Вы, вероятно, хотите, чтобы ваш основной запрос UPDATE
тип, а не SELECT
, Вы можете найти несколько сложных примеров на http://psoug.org/reference/update.html
Чтобы обновить только на основе условия, просто добавьте его в предложение WHERE. Но угадайте что - у вас уже было это там. Этот запрос должен делать то, что вы хотите - не так ли?
update aaa.bbb
set PROJECT_QUOTA=555
where ORG_UNIT_NAME ='ccc' and created_Date=to_date('01/11/2012','dd/mm/yyyy')