【问题标题】:SSRS returning only child nested stored procedure dataSSRS 仅返回子嵌套存储过程数据
【发布时间】:2016-02-10 06:55:41
【问题描述】:

在 SSRS 中,我通过调用存储过程来创建数据集,该存储过程调用子存储过程等等。有4个嵌套存储过程。每个调用存储过程都有一个参数来避免显示数据,而是将其嵌入到全局临时表中。这允许我只显示来自父存储过程的数据。

即使担心存储过程中的依赖性问题,我这样做也是为了:

  1. 重复使用存储过程逻辑,因为每个父存储过程都基于子存储过程中的数据构建
  2. 根据我调用的嵌入式子存储过程检索不同类型的数据。
  3. 避免重复相同的逻辑,因为每个存储过程都基于其子级构建

例如:

DECLARE @SqlString NVARCHAR(2000)
DECLARE @ParamDef NVARCHAR(2000)

SET @SqlString = N'EXEC ClaimantFinancePaymentCategories @param1'
SET @ParamDef = N'@param1 int'

EXECUTE sp_executesql @SqlString ,@ParamDef, @param1 = 1 -- view the data

而存储过程ClaimantFinancePaymentCategories调用另一个嵌套存储过程:

DECLARE @SqlString NVARCHAR(2000)
DECLARE @ParamDef NVARCHAR(2000)

SET @SqlString = N'EXEC ClaimantFinancePaymentSubCategories @param1'
SET @ParamDef = N'@param1 int'

EXECUTE sp_executesql @SqlString ,@ParamDef, @param1 = 0 -- view the data

等等。在 SSRS 中,当我运行“查询设计器”时会返回父数据集,但是当父存储过程只有一个嵌入式存储过程时,SSRS 会显示来自父存储过程的数据列。

不幸的是,在调用 2 个嵌套的子存储过程后,SSRS 显示来自最嵌入的子存储过程的数据列,而不是来自父存储过程的数据列。

我尝试使用嵌入式子存储过程中的用户定义表而不是全局临时表返回数据,但结果相同。

有什么建议吗?

【问题讨论】:

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


    【解决方案1】:

    在您的报表数据集中,您可以声明一个包含正确列的临时表。像这样将父存储过程的结果插入其中:

    INSERT INTO #tempTable 
    EXECUTE sp_executesql @SqlString ,@ParamDef, @param1 = 1
    

    然后从临时表中选择 *。这将允许报告填充正确的列。

    【讨论】:

      猜你喜欢
      • 2016-04-17
      • 2016-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-20
      • 1970-01-01
      • 2020-12-11
      相关资源
      最近更新 更多