oraclesql中的Case

oraclesql中的Case,sql,oracle,Sql,Oracle,这个代码有什么问题 select emp_id, emp_name from emp where case when :emp.designation_id = '008' then designation_id = '003' case是一个返回值的表达式。而大小写表达式以结束结尾。而case表达式返回有效类型 也许你打算: select emp_id, emp_name from emp where designation_id = (case when :emp.designat

这个代码有什么问题

select emp_id, emp_name 
from emp 
where case  when :emp.designation_id = '008' then designation_id = '003'

case
是一个返回值的表达式。而
大小写
表达式以
结束
结尾。而
case
表达式返回有效类型

也许你打算:

select emp_id, emp_name 
from emp
where designation_id = (case when :emp.designation_id = '008' then designation_id = '003' end);
在不使用
case
的情况下,表达此逻辑的更简单方法是:

where :emp.designation_id = '008' and designation_id = '003'
但你可能真的打算:

where (:emp.designation_id = '008' and designation_id = '003') or
      (:emp.designation_id <> '008' and designation_id = :emp.designation_id)
其中(:emp.designation\u id='008'和designation\u id='003')或
(:emp.designation_id'008'和designation_id=:emp.designation_id)
看看这个问题