Oracle 10g中的可选条件

时间:2018-06-07 16:11:15

标签: sql oracle dynamic-sql case-when plsql-package

对于虚拟测试,我想在网络表单中显示员工列表。

Web表单上有一个下拉列表,其中包含一个简短的部门列表,如下所示:

All Depts
Sales Dept
Marketing Dept
Communication Dept
HR Dept
Finance Dept
IT Dept

All Depts的下拉项目的值为0.

以下小提示显示了我正在尝试做的事情:

http://sqlfiddle.com/#!4/59d1f/2

我知道我可以这样做:

IF (deptid = 0) THEN
   select firstname, lastname from employees;
ELSE
   select firstname, lastname from employees where deptid = :p_deptid
END IF;

但我的实际情况有一个更复杂的选择查询,涉及多个表的连接。所以,我不想用重复的代码弄乱我的剧本。

我可以使用CASE WHEN实现我的目标吗?或者我是否必须使用动态SQL?

感谢。

1 个答案:

答案 0 :(得分:2)

 SELECT firstname, lastname
 FROM employees
 WHERE 0 = :p_deptid
 OR dept_id = :p_deptid