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

SQL Server 2005 T-SQL 增強功能亮點:TRY/CATCH 錯誤處理、PIVOT/UNPIVOT 資料轉換與 XML 原生支援

     編輯:關於SqlServer

簡介

根據客戶調查,SQL Server 2005 最具價值的特性首推強化的 T-SQL。以下介紹三大核心增強功能。

1. 結構化錯誤處理:TRY / CATCH

以往 T-SQL 缺乏原生錯誤處理,需依賴 @@ERROR 檢查。SQL Server 2005 引入區塊式 TRY...CATCH,與主流語言一致,大幅提升程式碼健壯度。

BEGIN TRY
    SELECT 1/0;  -- 故意觸發除零錯誤
END TRY
BEGIN CATCH
    SELECT
        ERROR_NUMBER()   AS ErrorNumber,
        ERROR_SEVERITY() AS ErrorSeverity,
        ERROR_STATE()    AS ErrorState,
        ERROR_PROCEDURE() AS ErrorProcedure,
        ERROR_LINE()     AS ErrorLine,
        ERROR_MESSAGE()  AS ErrorMessage;
END CATCH;
  • ERROR_NUMBER():錯誤代碼。
  • ERROR_SEVERITY():嚴重性等級。
  • ERROR_STATE():狀態碼。
  • ERROR_PROCEDURE():發生錯誤的預存程序/觸發器名稱。
  • ERROR_LINE():錯誤行號。
  • ERROR_MESSAGE():完整錯誤訊息。

CATCH 區塊可巢狀,支援 THROW 重新拋出 (SQL 2012+)。

2. 資料行列轉換:PIVOT / UNPIVOT

以往需撰寫複雜 CASE/動態 SQL 實現行轉列。PIVOT 將資料列值旋轉為欄位,UNPIVOT 執行逆向操作。

USE AdventureWorks; GO
SELECT VendorID,
       [164] AS Emp1, [198] AS Emp2, [223] AS Emp3, [231] AS Emp4, [233] AS Emp5
FROM (
    SELECT PurchaseOrderID, EmployeeID, VendorID
    FROM Purchasing.PurchaseOrderHeader
) p
PIVOT (
    COUNT(PurchaseOrderID)
    FOR EmployeeID IN ([164], [198], [223], [231], [233])
) AS pvt
ORDER BY VendorID;
  • 彙總函數:COUNT、SUM、AVG、MAX、MIN 等。
  • IN 子句需列出所有目標欄位值,可搭配動態 SQL 處理未知值集合。

3. 原生 XML 支援增強

  • XML 結構描述集合:CREATE XML SCHEMA COLLECTION 註冊 XSD,供 XML 欄位/變數驗證。
  • XML 資料類型:CREATE TABLE Orders (OrderID int PRIMARY KEY, XMLOrder XML NOT NULL)。XML 欄位儲存於與基底資料表不同資料頁 (類似 BLOB),支援索引。
  • XML 索引:
    • 主要 XML 索引:CREATE PRIMARY XML INDEX PXML_Orders_OrderID ON Orders (XMLOrder)
    • 次要 XML 索引 (PATH/VALUE/PROPERTY):CREATE XML INDEX SXML_Order_OrderDetailsID ON Orders (XMLOrder) USING XML INDEX PXML_Orders_OrderID FOR PATH
  • XML 查詢與修改:query()、value()、exist()、modify() (insert/delete/replace 節點)。
  • SELECT 整合:SELECT * FROM Orders WHERE OrderID = 123 直接回傳 XML 欄位與其他關聯欄位。

結語

SQL Server 2005 T-SQL 透過 TRY/CATCH、PIVOT/UNPIVOT、原生 XML 類型與索引,將關聯式資料庫擴展至程序化錯誤處理、多維資料分析與半結構化資料管理領域。配合 Integration Services (原 DTS)、Analysis Services、Reporting Services,構建完整資料平台。立即體驗 Beta 版,掌握新一代資料庫開發技能。

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