当其中一个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)
}
}
答案 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);