【问题标题】:MultiValue Parameter Not Working in SSRS 2017 for Oracle DataSource多值参数在 Oracle 数据源的 SSRS 2017 中不起作用
【发布时间】:2020-04-23 16:47:30
【问题描述】:

我正在使用 oracle 数据源创建SSRS report。我将多值参数值作为过滤器传递给 Oracle dataset。以下是示例查询,

select *from FIN.FINANCIAL_TRANSACTION F
 where TO_DATE(F.CREATE_DATETIME) BETWEEN  to_date(:startdate,'YYYY-MM-DD') and  to_date(:enddate,'YYYY-MM-DD')
AND F.SUBTYPE IN (:subtype)

当我在 :subtype 参数中传递单个值时,此查询有效。当我传递多个值时,我没有得到任何输出。当参数中有多个值时,它作为逗号分隔的字符串传递。所以我试图用下面的查询分割字符串。但在报告处理中出现错误。

从 FIN.FINANCIAL_TRANSACTION F 中选择 * TO_DATE(F.CREATE_DATETIME) BETWEEN to_date(:startdate,'YYYY-MM-DD') 和 to_date(:enddate,'YYYY-MM-DD') AND F.SUBTYPE IN ( 选择 regexp_substr(replace(:subtype,'''', '"'),'[^,]+', 1, level) as txt
从双重连接通过 regexp_substr(replace(:subtype,'''', '"'), '[^,]+', 1, level) 不为空)

【问题讨论】:

    标签: sql-server oracle reporting-services report ssrs-2012


    【解决方案1】:

    您查询中的问题是REPLACE(:SUBTYPE, '''', '"')。 为什么要用双引号代替单引号?

    Oracle 中的值总是像这样用单引号括起来 -

    F.SUBTYPE IN ('val1','val2','val3',.....)  
    

    所以我认为这是您查询的唯一问题。

    对于以逗号分隔的多个输入参数,您可以使用Hierarchical query 如下(重复查询以提供实际查询):

    SELECT
        *
    FROM
        FIN.FINANCIAL_TRANSACTION F
    WHERE
        TO_DATE(F.CREATE_DATETIME) BETWEEN TO_DATE(:STARTDATE, 'YYYY-MM-DD') 
          AND TO_DATE(:ENDDATE, 'YYYY-MM-DD')
        -- changes after this line (IN clause)
        AND F.SUBTYPE IN (
            SELECT DISTINCT
                TRIM(REGEXP_SUBSTR(:SUBTYPE, '[^,]+', 1, LEVEL)) VALUE
            FROM
                DUAL
            CONNECT BY
                REGEXP_SUBSTR(:SUBTYPE, '[^,]+', 1, LEVEL) IS NOT NULL
        );
    

    这将支持单个和多个值(逗号分隔)。

    干杯!!

    【讨论】:

    • 嗨 Tejesh 我现在可以在 where 条件 INSTR(:subtype, SUBSTYPENAME) > 0 中使用以下子句传递多值参数。我正在尝试使用以下代码实现 All if null 条件,WHERE (INSTR(:subtype, SUBSTYPENAME) > 0 OR :subtype = 'ALL') 但总是出错。你能帮忙吗?
    • 嗨,我试过这个方法,但我得到一个非法变量名称/编号的错误。但是,如果我对日期参数的值进行硬编码,那么它不会给我任何错误,但是在从另一个参数中选择多个值之后,报告数据不会被过滤掉。知道发生了什么
    猜你喜欢
    • 2019-01-26
    • 2014-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多