【问题标题】:Oracle BI Publisher multiple select parametersOracle BI Publisher 多选参数
【发布时间】:2015-01-16 10:57:25
【问题描述】:

我需要在 BI Publisher 报表上有多个选择参数。我将参数传递给一个函数,该函数将逗号分隔的值列表转换为表。然后,我在 where 子句的“IN”语句中使用来自 csv 解析器函数的表。它看起来像下面...

select * from table(my_report_function(my_csv_parser_function(:Parameter))

当我在 SQL Developer 中运行它时,它运行良好。问题是,当 BI Publisher 传递参数时,它会将每个逗号解释为单独的参数,因此我得到参数数量无效的错误。如何阻止它这样做,或者有更好的方法来处理传递给函数的多个选择参数?

【问题讨论】:

    标签: oracle oracle11g obiee bi-publisher


    【解决方案1】:

    是的,参数在 sql 查询中作为 line 传递,以便稍后在 sql 查询中使用此参数。

    在您的情况下,例如:

    select * from table(my_report_function(my_csv_parser_function(1,2,3,4,5,6))
    

    您可以在您的 sql 查询中使用此参数。 以我为例,它是:

    select *
    from dev_dmart.FCT_CURRENCY_RATE
    WHERE FROM_CURRENCY_CD = 840
    and TO_CURRENCY_CD IN (:multiple_select_parameter_list)
    

    在你的情况下,它可能是这样的:

    select * from table(my_report_function())
    where field in (:Parameter)
    

    或者您可以在 Publisher 中的“数据前”上创建事件触发器并在那里调用函数,该函数将计算数据并将其插入 TABLE(例如 PRECALCULATED_DATA)。 然后在报告中您可以使用查询:

    从 PRECALCULATED_DATA 中选择 * (:Parameter) 中的字段

    【讨论】:

    • 我一直在做第二个例子。我需要的是如何将多选参数传递给函数。我有一个特定的多选参数,它要求我使用不同的查询,因此我想编写一个 PL/SQL 函数,该函数将根据用户是否在此特定参数中选择一个值来运行两个查询之一。我在 SQL Developer 中编写了一个可以很好地执行此操作的函数,但是当我尝试使用它时,BIP 给了我无效数量的参数错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-07
    • 2022-09-28
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    相关资源
    最近更新 更多