SQL Server 2005 內建 Reporting Services (SSRS) 提供強大的報表設計、渲染、訂閱能力。本文演示如何使用存儲過程作為數據源,構建支持動態參數的互動式報表。
使用 Northwind 資料庫 Orders 表,構建支持全量/單客戶雙模式查詢:
IF EXISTS (SELECT * FROM sysobjects WHERE name='procTest' AND xtype='P')
DROP PROC procTest;
GO
CREATE PROC procTest
@CustomerId VARCHAR(20)
AS
IF @CustomerId = '*'
SELECT * FROM Orders;
ELSE
SELECT * FROM Orders WHERE CustomerID = @CustomerId;
測試:EXEC procTest 'VINET'(單客戶)或 EXEC procTest '*'(全量)。
SELECT * FROM Orders WHERE CustomerID = 'VINET' 獲取欄位元數據,設計器自動識別所有列,避免手動添加。完成後恢復為 EXEC procTest @CustomerId。CustomerID 參數,類型 String,默認值 *,與存儲過程邏輯對應。="EXEC procTest '" & Parameters!CustomerID.Value & "'",實現動態參數傳遞。生產環境建議:存儲過程返回明確列而非 SELECT *;添加分頁參數(@PageIndex, @PageSize)避免大數據集傳輸;使用表值函數 (TVF) 替代存儲過程以便直接 JOIN;配置報表快照與緩存策略提升響應速度。