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')
Другие вопросы по тегам