使用页面项目值在 oracle apex 中搜索经典报告

Posted

技术标签:

【中文标题】使用页面项目值在 oracle apex 中搜索经典报告【英文标题】:classic report searching in oracle apex using page item values 【发布时间】:2014-01-11 05:31:28 【问题描述】:

我在我的 oracle apex 中将我的数据库中的一个表显示为经典报告,现在我想为这个经典报告添加搜索条件并创建一个选择列表、两个文本字段和一个执行按钮,直到一切正常.在这里,我想在页面中显示经典报告,尽管这些值没有设置。如何在经典报告查询中进行调整,以便如果未设置这些值,我应该显示数据库表中的所有行,否则根据搜索条件显示。

我的报告来源如下:

select b.*
from "#OWNER#"."Books"  b
where i_type = 'CU'  
   and state = :P46_STATE 
   and city = :P46_CITY 
   and name = :P46_NAME 

:P46_state 是一个选择列表,:P46_city, :P46_name 是搜索条件中的文本字段,如果未设置这些值,则必须显示完整报告/,如果设置则必须根据搜索显示。

提前致谢。

【问题讨论】:

【参考方案1】:
select b.*
from "#OWNER#"."Books"  b
where i_type = 'CU'  
   and (state = :P46_STATE OR :P46_STATE IS NULL)
   and (city = :P46_CITY OR :P46_CITY IS NULL)
   and (name = :P46_NAME OR :P46_NAME IS NULL)

如果您希望搜索在 CITY 上进行关键字搜索,您可以使用 LIKE:

select b.*
from "#OWNER#"."Books"  b
where i_type = 'CU'  
   and (state = :P46_STATE OR :P46_STATE IS NULL)
   and (city LIKE '%'||:P46_CITY||'%' OR :P46_CITY IS NULL)
   and (name = :P46_NAME OR :P46_NAME IS NULL)

或者,您可以使用 INSTR:

select b.*
from "#OWNER#"."Books"  b
where i_type = 'CU'  
   and (state = :P46_STATE OR :P46_STATE IS NULL)
   and (INSTR(city, :P46_CITY) > 0 OR :P46_CITY IS NULL)
   and (name = :P46_NAME OR :P46_NAME IS NULL)

【讨论】:

谢谢你,但我想用 like 而不是 city = :P46_CITY 但是当我尝试如下时它没有显示任何结果。 city like %:P46_CITY%city like '%:P46_CITY%' :P46_CITY 是一个绑定变量,而不是一个替换,所以它不能插入到这样的字符串中;但是,它可以连接到另一个字符串。查看我的编辑。【参考方案2】:

你不需要串联 - 这让你搞砸了

所以

和(城市 LIKE '%'||:P46_CITY||'%' OR :P46_CITY IS NULL)

变成

和(城市 LIKE '%:P46_CITY%' OR :P46_CITY IS NULL)

【讨论】:

为什么这个答案被标记为正确?不起作用。你不能像那样连接绑定变量!

以上是关于使用页面项目值在 oracle apex 中搜索经典报告的主要内容,如果未能解决你的问题,请参考以下文章

在 Oracle APEX 交互式报表中更新与过滤器相关的页面项目

Oracle Apex - 动态检查不在报告中的复选框项目

如何在页眉 oracle apex 中设置项目值

ORACLE apex - 使用 PL/SQL 循环通过复选框项目

Oracle APEX 文本页面项作为 SQL 查询中的不可编辑超链接字段

Oracle APEX 4.2 经典报告中的自定义搜索