oracle条件in子句

时间:2014-10-01 01:46:23

标签: sql oracle

当其中一个in参数可以为null时,是否可以在oracle中执行conditional in子句
例如:
用单个oracle查询替换伪代码
查询将获取job_id或parent_job_id更新的员工
仅当parent_job_id不为空时

fetch_employees(_job_id,_parent_job_id)
{
if(_parent_job_id==null){
    return result of  select * from employee where job_id = _job_id
}
else {
    return result of  select * from employee where job_id in( _job_id,_parent_job_id)
 }

}

1 个答案:

答案 0 :(得分:1)

这样做你想要的吗?

fetch_employees(_job_id,_parent_job_id);

select e.*
from employee e
where (_parent_job_id is null and job_id = _job_id) or
      (_parent_job_id is not null and job_id in( _job_id, _parent_job_id) )

实际上NULL允许in。所以,你可以这样做:

fetch_employees(_job_id,_parent_job_id);

select e.*
from employee e
where job_id in( _job_id, _parent_job_id);