SQL Server 2005中的T-SQL
2008-04-02 10:31:46来源:互联网 阅读 ()
简介
将于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
改进的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 标签: 版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
相关文章
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设 网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源 网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它 服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护 软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash 热门词条
最新资讯
热门关注
热门标签
|