SSRS 2008不会从存储过程返回正确的数据集

时间:2014-04-02 13:41:27

标签: sql sql-server stored-procedures reporting-services

我有一个具有多个Query的过程,它根据使用的参数运行。

If Reportname = 'Foo'
Begin
Select Forename, Surname, Jobtitle, Gender from Staff where X = y
End

If ReportName = 'Bar'
Begin
Select EnrolmentID, StudentID, EnrolmentStartDate, EnrollmentExpectedEndDate, Status  from Enrolment where y = Z
End

如果我在SSMS中运行它,它会返回正确的记录和列。 在SSRS中,当我选择过程并设置参数时,它将可用列定义为过程的第一个Select语句中包含的列。

此过程将用于各种不同的报告和后端处理,理想情况下我不想加倍代码。

是否有人就如何让SSRS检测到正在应用的正确上下文有任何建议?

我知道我可以将一些核心逻辑改为表值函数,它返回一些适用于所有情况的通用数据。

由于

还有没有人有说服我的老板从ADO Classic升级到ADO.Net实体框架的提示?我错过了EF的灵活性,特别是当我们在存储过程中执行所有操作时,包括返回单个值会让我发疯。

1 个答案:

答案 0 :(得分:1)

我会创建2个SP,每个SP返回2个案例的数据,然后您设置为报告来源的“facade”SP可能如下所示:

CREATE TABLE #ReportTable(col1 ID, col2 varchar(80), etc)
IF Reportname = 'Foo'
Begin
    INSERT #ReportTable(col1, col2, ...)
    EXEC dbo.GetDataForReport1 '7131', 25
End

IF ReportName = 'Bar'
Begin
    INSERT #ReportTable (col1, col2, ...)
    EXEC dbo.GetDataForReport2 '7131', 25
End

SELECT col1, col2, ...
FROM #ReportTable