简介
将于12月份发布的SQL Server 2005目前正处于准备阶段,最近,我研究了一份对Edgewood Solutions客户进行的调查,调查中询问他们认为什么是微软的新发布的数据库中最有价值的特性。一个不分职位、行业、公司规模和从业时间的常见回答就是加强的T-SQL。这些发现可以作为以下有关Transact-SQL编程扩展的贴士的基础。
错误处理:TRY 和CATCH
将行转换为列:PIVOT 和UNPIVOT
XML改进
贴士1:用TRY和CATCH进行错误处理
自带的错误处理是T-SQL经常被用来与其他语言进行比较的缺点。SQL Server 2005引入了TRY和CATCH,与其他许多数据库一样。通过使用这种许多开发人员和数据库管理员都熟悉的方式来进行错误处理将大大提高对SQL Server的信心。
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;
通过PIVOT 和UNPIVOT将行转换为列
一位在保健公司上班的开发人员每当她的报告用户想要将行转换为列的时候,抱怨不止。这并不是一次良好的会话。她不得不编写一些需要执行好多个CPU周期的复杂的代码来给用户提供他们想要的数据,对这些数据的要求是在正式报告需求基础之上产生的。这些痛苦的会话在SQL Server 2005引入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
资源: 使用 PIVOT 和UNPIVOT, SQL Server 2005 在线书籍:ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.en/udb9/html/24ba54fc-98f7-4d35-8881-b5158aac1d66.htm
