ORA-00936:缺少表达。为什么我收到这条消息?

时间:2012-11-12 17:24:57

标签: sql oracle plsql case-when

我的意思是我使用beginend尝试所有内容,但它不起作用。 我该如何解决这个问题?

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 个答案:

答案 0 :(得分:1)

在SQL中,CASE构造不是流控制结构。可以想象它是COALESCE()的通用版本。你无法在里面填写完整的UPDATE查询!

您可能希望主要查询属于UPDATE类型,而不是SELECT。您可以在http://psoug.org/reference/update.html

找到一些复杂的示例

答案 1 :(得分:0)

要仅根据条件进行更新,只需将其添加到WHERE子句即可。但猜猜是什么 - 你已经拥有了它。这个查询应该做你想做的事 - 是吗?

update  aaa.bbb 
set PROJECT_QUOTA=555 
where ORG_UNIT_NAME  ='ccc' and created_Date=to_date('01/11/2012','dd/mm/yyyy')