拼吾爱程序人生

首页 » 数据库编程 » SQL Server » SQL Server 2005中的T-SQL
Systemjudge - 2007-8-6 16:53:00
&;middot;瑞星病毒监测报告(2005.12.12-2005.12.1&;middot;使用VS2005打造简单分页浏览器&;middot;快下载:微软免费提供VB2005电子书&;middot;三分钟学会打字,神奇数字五笔2005.1&;middot;体验另类的微软MCE2005&;middot;VS.NET2005 Beta2初体验&;middot;SQL 2005的SSIS与Oracle的迁移性能&;middot;教你用WPS2005演示制作播放按钮&;middot;WPS2005中页眉页脚的设计技巧&;middot;VC#2005快速入门之使用if语句简介
最近,我研究了一份对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 
改进的XML 
XML普遍应用在通过许多异构的环境进行数据传输和在许多微软的应用程序之间传输数据上;SQL Server 2005 XML特性改善了创建、存储、传输和查询XML数据的内在能力。现在可以在SQL Server中自然地完成如下: 
创建一个可以被表的某列引用的XML计划 
CREATE XML SCHEMA COLLECTION [ . ]sql_identifier AS Expression 
为一个表创建一个本地的数据类型,这个表在创建的时候具有指向XML计划集合的指针,同时这个表放在与基本表不同的数据页上,就像SQL Server 2000中的BLOB。 




CREATE TABLE Orders 
(OrderID int PRIMARY KEY NOT NULL, 
OrderDetailsID int NOT NULL, 
OrderDate datetime NOT NULL, 
… 
XMLOrder xml NOT NULL)   
为存储过程或者特别的事务创建一个变量作为XML数据类型 
DECLARE @OrdersSchema xml 
… 
CREATE XML SCHEMA COLLECTION OrdersSchema AS @OrdersSchema 
通过创建主要和第二索引来提高对XML数据访问的速度 




CREATE PRIMARY XML INDEX PXML_Orders_OrderID 
ON OrdersSchema.Orders (OrderID); 
GO 
CREATE XML INDEX SXML_Order_OrderDetailsID 
ON OrdersSchema.Orders (OrderDetailsID) 
USING XML INDEX PXML_Orders_OrderID FOR PATH ; 
GO   
通过一个简单的SELECT语句来查询XML数据,将XML作为结果集的一部分,与表中余下的字段一起返回。 




SELECT * 
FROM Orders 
WHERE OrderID = 123   
结论 
SQL Server 2005中的T-SQL通过扩展传统关系型数据库管理系统获得了长足的进步。以上描述的各项只是冰山一角,T-SQL还有其他方面的提高,检查DTS——现在是SQL Server集成服务,分析服务,报告服务等。这些都是有挑战性的,然而令人兴奋的是,了解SQL Server所有这些新功能的日子不远了。

 您可能对 [SQL Server] 的这些文章也感兴趣:

Oracle与SQL Server的互连
SQL Server2000安装手册(用于Windows版CAMS
监测你的SQL SERVER--让瓶颈暴露
从Oracle到Sql Server--Sql智能翻译器
给SQL Server传送数组参数的变通办法
道与魔:SqlServer存储过程/函数加/解密
SQL SERVER SQL Agent服务使用小结
从Oracle迁移到SQL Server的陷阱
SQL Server中读取XML文件的简单做法
用SQL Server保持会话状态
应用事件探查器优化SQL Server系统
保护SQL Server 2000的十个步骤
1
查看完整版本: SQL Server 2005中的T-SQL
Modify by pin5i DZNT_ExpandPackage 2.1.3293 2007-2009 pin5i.com
 Total Unique Visitors: