使用页面项目值在 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 - 使用 PL/SQL 循环通过复选框项目