【问题标题】:Calling oracle package from SSRS从 SSRS 调用 oracle 包
【发布时间】:2015-03-22 01:17:21
【问题描述】:

我想将日期范围和员工 ID 从 SSRS 发送到 Oracle 包。有谁知道该怎么做?即使我尝试声明一个包含三个参数 from_date、to_date 和employee_id 的oracle 包,它也适用于一个员工ID。但是,如果我在 SSRS Web 界面中选择多个员工说参数数量错误,则会失败。有谁知道如何处理这个问题?

【问题讨论】:

    标签: sql-server oracle reporting-services plsql ssrs-2008


    【解决方案1】:

    通常使用 SQL 和 SSRS 你会做类似的事情

    Select * From Table where Table.Field in @Param

    Oracle 当然是不同的,取决于您使用的连接类型。

    ODBC 连接你会使用类似的东西: Select * From Table where Table.Field = ? 参数的顺序在这里很重要,所以要小心。

    OLEDB 连接你会使用类似的东西: Select * From Table where Table.Field = :Param

    但是,以上都不适用于参数的多选。你可以这样做:

    =”Select * From Table where Table.Field in (‘” + Join(Parameters!parameter.Value,”‘, ‘”) + “‘)”

    =”Select * From Table where Table.Field in(” + Join(Parameters!parameter.Value,”, “) + “)” 如果值或您的字段仅为数字。

    这里有几篇不错的文章,你可以看看。如果没有更多信息,它的解释比我个人所能给出的更好;您的 Oracle 环境、连接类型等的详细信息。

    Quick Reference:

    1. 确保您的 Oracle 版本为 9 或更高版本,这些都不起作用 版本 8 或更早版本。
    2. 在 Oracle 中使用参数时,请使用 : 而不是 @ 符号 – :param 而不是 @param。
    3. 为您的数据集添加一个“ALL”选项,为 多值下拉参数。
    4. 使用“where ( field1 in ( :prmField1 ) 或 ( :prmField1 ) ) 中的‘ALL’”语法。
    5. 您可以从数据集窗口执行查询,但只能 提供 1 个值。但是,该值可以是“ALL”。
    6. 让您的用户了解“全部”与“(全选)”。

    另一篇关于使用 Oracle 的 SSRS 中的多个参数的好文章:Davos Collective 在顶部引用。

    希望这会有所帮助!

    【讨论】:

    • 我正在使用 OLEDB,因此使用了 :Param。 Oracle 数据库是 11g。但是如何将参数传递给oracle程序?我的程序是 test_package.test_proc(start_date, end_date, employee_id)。如果我在数据集中直接调用过程时为employee_id 选择多个值,它会开始崩溃,说参数数量不匹配。我是否错误地调用包?我正在做的是在数据集中调用它,就像 TEXT 类型的数据源中的 test_package.test_proc(:start_date, :end_date, :employee_id) 一样,我没有在数据集中使用 PROCEDURE。错了吗?
    • @shady 你应该看看这篇文章。它处理问题的方式有点不同:joellipman.com/articles/microsoft/sql-server/ssrs/… 当您在 SSRS 中创建一个游标以循环访问数据时。如果以上(在引用的文本中)不起作用,应该做你想做的事。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 2011-02-26
    • 1970-01-01
    相关资源
    最近更新 更多