首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2005 內建報表服務實戰:預存程序為資料集來源完整範例

     編輯:關於SqlServer

場景:Northwind 資料庫 Orders 表,依 CustomerID 參數篩選報表

1. 建立彈性預存程序

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 '*';      -- 全部

2. SSRS 報表專案建立步驟

  1. 建立資料來源: 指向 Northwind,驗證模式視環境 (Windows/SA)。
  2. 建立新報表: 專案 → 新增項目 → 報表。
  3. 建立資料集 (關鍵技巧):
    右鍵資料集 → 新增 → 選「使用內嵌資料集」 → 資料來源選上一步建立的 → **查詢類型選「預存程序」**。
    **問題:** 設計介面需要知道欄位清單,但預存程式碼不回傳中繼資料。
    **解法:** 在查詢字串暫時輸入 EXEC procTest '*' → 執行 → 設計師自動取得欄位 → **再改回預存程序呼叫語法**。
  4. 建立報表參數 CustomerID:
    報表資料 → 參數 → 新增 CustomerID、型別 String、預設值 * (與 SP 邏輯一致)。
  5. 資料集查詢綁定參數:
    資料集屬性 → 查詢 → 運算式 (fx):
    ="EXEC procTest '" & Parameters!CustomerID.Value & "'"
  6. 版面設計: 拖曳 Table/矩陣/圖表,綁定資料集欄位。
  7. 預覽驗證: 輸入 VINET / * 切換篩選。

常見坑與提示

  • F5 執行不顯示: 設計師預覽 (預覽標籤) 正常即可,F5 偵錯模式有時需完整部署至報表伺服器。
  • 匿名瀏覽: 報表管理器 → 屬性 → 安全性 → 新增「瀏覽者」角色給「所有人」帳號。
  • 參數驗證: SP 端建議加 IF @CustomerId IS NULL SET @CustomerId = '*' 防御性編程。

SQL Server 2005 **整合報表服務 (SSRS)** 免費內建,**預存程序作資料集** 實現邏輯封裝、參數化與效能最佳化。掌握「先跑 SELECT 取欄位、再綁定 SP」技巧,快速上手企業級報表開發。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved