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

时间:2014-01-11 05:31:29

标签: sql plsql oracle-apex

我正在我的数据库中显示一个表作为我的oracle apex中的经典报告,现在我想为这个经典报告添加搜索条件并创建一个选择列表,两个文本字段和一个go按钮,直到这一切都正确。在这里,我想在页面中显示经典报告,虽然这些值没有设置。如何在经典报告查询中进行调整,以便在未设置这些值的情况下,我应该根据搜索条件显示数据库表中的所有行。

我的报告来源如下:

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是搜索条件中的文本字段,如果未设置这些值,则必须显示完整报告/并且如果设置必须按搜索显示。

提前致谢。

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:-1)

你不需要连接 - 这让你搞砸了

SO

和(城市LIKE'%'||:P46_CITY ||'%'或:P46_CITY为空)

变为

和(城市LIKE'%:P46_CITY%'或:P46_CITY为空)