使用带参数的存储过程的 SSRS 报表

这篇 SSRS 文章展示了如何使用带参数的存储过程创建报表。例如,如果客户仅提供存储过程来设计报表,并且该存储过程接受参数值,那么我们可以使用此方法。

右键单击“数据集”文件夹以创建新的数据集。下面的屏幕截图显示了我们在本次 SSRS 带参数存储过程示例中使用的报表数据集。

Choose the required SP as the DataSet

我们在本 SSRS 示例中使用的 SQL 存储过程是

USE [AdventureWorksDW2019]
GO
CREATE PROCEDURE [dbo].[SP_ProductCategorySales]
@Category VARCHAR(100)
AS
BEGIN
SET NOCOUNT ON;
	SELECT Cat.[EnglishProductCategoryName] AS Category, 
		SubCat.[EnglishProductSubcategoryName] AS SubCategory, 
		Prod.EnglishProductName AS ProductName, 
		Prod.Color, 
		SUM(Fact.OrderQuantity) AS Orders, 
		SUM(Fact.TotalProductCost) AS ProductCost, 
		SUM(Fact.SalesAmount) AS Sales, 
		SUM(Fact.TaxAmt) AS Tax
	FROM FactInternetSales AS Fact
	INNER JOIN DimProduct AS Prod ON Fact.ProductKey = Prod.ProductKey
	INNER JOIN DimProductSubcategory AS SubCat ON Prod.ProductSubcategoryKey = SubCat.ProductSubcategoryKey 
	INNER JOIN DimProductCategory AS Cat ON SubCat.ProductCategoryKey = Cat.ProductCategoryKey
	WHERE Cat.[EnglishProductCategoryName] = @Category
	GROUP BY Cat.[EnglishProductCategoryName], SubCat.[EnglishProductSubcategoryName], 
	Prod.EnglishProductName, Prod.Color	
END

如果您观察上面的 存储过程,它有一个带有 @Category 参数的 where 条件。转到“字段”选项卡以检查列,并在需要时重命名它们。

使用带参数的存储过程的 SSRS 报表

下面的屏幕截图显示了存储过程中可用的列以及自动创建的 Category 参数。接下来,要创建表报表,请右键单击空白区域,选择“插入”,然后选择“表”选项。我们设计了一个简单的按产品销售的表报表,并设置了字体和颜色格式。

Formatted table Report

如果您转到“SSRS 报表使用带参数的存储过程”的预览,它会显示一个用于输入类别的文本框。由于没有默认值,它显示一个空报表。

如果您输入 Clothing,它将显示属于 Clothing 的所有产品销售。

SSRS Report using Stored Procedure with Parameter Preview

我将创建另一个数据集来获取不同的产品类别名称,以便我们可以将它们用作 @Category 参数的可用字段。

SELECT DISTINCT EnglishProductCategoryName 
FROM DimProductCategory

双击 @Cateogry 以打开“报表参数属性”窗口。转到“可用值”选项卡,选择“从查询获取值”选项,然后使用下拉菜单选择数据集、值和标签字段。

Available values

现在,如果您转到报表预览,您将从下拉列表中看到存储过程参数值。

SSRS Report using Stored Procedure with Parameter Preview