IF EXISTS (SELECT * FROM sysobjects WHERE name='procTest' AND xtype='P')
DROP PROC procTest;
GO
CREATE PROC procTest
@CustomerId VARCHAR(20)
AS
BEGIN
IF @CustomerId = '*'
SELECT * FROM Orders;
ELSE
SELECT * FROM Orders WHERE CustomerID = @CustomerId;
END
GO
-- 測試
EXEC procTest 'VINET'; -- 單一客戶
EXEC procTest '*'; -- 全部
EXEC procTest '*' → 執行 → 設計師自動取得欄位 → **再改回預存程序呼叫語法**。CustomerID、型別 String、預設值 * (與 SP 邏輯一致)。="EXEC procTest '" & Parameters!CustomerID.Value & "'"
VINET / * 切換篩選。IF @CustomerId IS NULL SET @CustomerId = '*' 防御性編程。SQL Server 2005 **整合報表服務 (SSRS)** 免費內建,**預存程序作資料集** 實現邏輯封裝、參數化與效能最佳化。掌握「先跑 SELECT 取欄位、再綁定 SP」技巧,快速上手企業級報表開發。