在SSRS中,我通过调用调用子存储过程的存储过程来创建数据集,依此类推。有4个嵌套存储过程。每个调用存储过程都有一个参数,以避免显示数据,而是将其嵌入到全局临时表中。这允许我仅显示父存储过程中的数据。
即使存储过程中存在依赖问题,我也这样做,所以我可以:
例如:
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显示来自最嵌入的子存储过程的数据列,而不显示来自父存储过程的数据列。
我尝试使用嵌入式子级存储过程中的用户定义表而不是全局临时表来返回数据,但是我得到了相同的结果。
有什么建议吗?
答案 0 :(得分:0)
在报表数据集中,您可以使用正确的列声明临时表。将父存储过程的结果插入其中,如下所示:
INSERT INTO #tempTable
EXECUTE sp_executesql @SqlString ,@ParamDef, @param1 = 1
然后从临时表中选择*。这将允许报告填充正确的列。