【问题标题】:classic report searching in oracle apex using page item values使用页面项目值在 oracle apex 中搜索经典报告
【发布时间】: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 是搜索条件中的文本字段,如果未设置这些值,则必须显示完整报告/,如果设置则必须根据搜索显示。

提前致谢。

【问题讨论】:

    标签: sql plsql oracle-apex


    【解决方案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)

    【讨论】:

    • 为什么这个答案被标记为正确?不起作用。你不能像那样连接绑定变量!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多