分享
 
 
 

SQL Server 2005中的T-SQL

王朝mssql·作者佚名  2006-02-17
窄屏简体版  字體: |||超大  

简介

将于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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有