Oracle APEX向查询添加条件筛选器

时间:2018-06-11 22:02:41

标签: oracle-apex-5.1

如何向查询添加条件过滤器?我在页面上有一个下拉列表,我想根据下拉列表选择值过滤报表查询。我对该部分很好(只需将项目名称添加到以列开头的查询),但事实是我希望在下拉列表中未选择任何内容时不添加过滤器。怎么能完成呢?

更新

WHERE子句的示例:

WHERE ID=5 AND START_DATE=SYSDATE-:P1_NUM_OF_DAYS

如果选择了P1:NUM_OF_DAYS,如果没有,则应为所有日期选择数据

2 个答案:

答案 0 :(得分:0)

如果下拉列表(选择列表)项目的名称是P1_DEPTNO,那么

where (d.deptno = :P1_DEPTNO or :P1_DEPTNO is null)
  and ...

答案 1 :(得分:0)

我相信你要找的是基于功能的报告。这将允许您包含一个PL / SQL函数体,它将从表/视图返回查询,并根据页面项值应用任何过滤器(如果有)。当您希望最终用户可以灵活地在报表上动态应用过滤器时,这是经典报表的常用用法。

代码是这样的:

declare
q varchar2(4000);
begin
q:='select * from TABLE_NAME WHERE ID = 5
and ';
IF :P1:NUM_OF_DAYS IS NOT NULL THEN
q:=q||' NUM_OF_DAYS= :P1:NUM_OF_DAYS AND ';
END IF;
return q||'1=1';
END;

只需确保您拥有页面项目'存储在会话中的值。您可以通过提交页面或执行“重定向”和“设置值”来完成此操作。如果您确实希望有另一个按钮,例如“应用过滤器”#39;此外,具有适当的使用来源'来源'取决于您希望如何实现此功能。

希望这有帮助!