作者:59030777 来源:itpub
SQL Server 2005中的T-SQL增强(一)
丰富的数据类型 Richer Data Types
1、varchar(max)、nvarchar(max)和varbinary(max)数据类型最多可以保存2GB的数据,可以取代text、ntext或image数据类型。
CREATE TABLE myTable ( id INT, content VARCHAR(MAX) ) |
2、XML数据类型
XML数据类型允许用户在SQL Server数据库中保存XML片段或文档。
错误处理 Error Handling
1、新的异常处理结构
2、可以捕获和处理过去会导致批处理终止的错误。前提是这些错误不会导致连接中断(通常是严重程度为21以上的错误,例如,表或数据库完整性可疑、硬件错误等等。)。
3、TRY/CATCH 构造
SET XACT_ABORT ON BEGIN TRY <core logic> END TRY BEGIN CATCH TRAN_ABORT <exception handling logic> END TRY @@error may be quired as first statement in CATCH block |
4、演示代码
USE demo GO --创建工作表 CREATE TABLE student ( stuid INT NOT NULL PRIMARY KEY, stuname VARCHAR(50) ) CREATE TABLE score ( stuid INT NOT NULL REFERENCES student(stuid), score INT ) GO INSERT INTO student VALUES (101,'zhangsan') INSERT INTO student VALUES (102,'wangwu') INSERT INTO student VALUES (103,'lishi') INSERT INTO student VALUES (104,'maliu') --调用一个运行时错误 SET XACT_ABORT OFF BEGIN TRAN INSERT INTO score VALUES (101,90) INSERT INTO score VALUES (102,78) INSERT INTO score VALUES (107, 76) /* 外键错误 */ INSERT INTO score VALUES (103,81) INSERT INTO score VALUES (104,65) COMMIT TRAN GO SELECT * FROM student SELECT * FROM score --使用TRY...CATCH构造,并调用一个运行时错误 SET XACT_ABORT OFF BEGIN TRY BEGIN TRAN INSERT INTO score VALUES (101,90) INSERT INTO score VALUES (102,78) INSERT INTO score VALUES (107, 76) /* 外键错误 */ INSERT INTO score VALUES (103,81) INSERT INTO score VALUES (104,65) COMMIT TRAN PRINT '事务提交' END TRY BEGIN CATCH ROLLBACK PRINT '事务回滚' SELECT ERROR_NUMBER() AS ErrorNumber, ERROR_SEVERITY() AS ErrorSeverity, ERROR_STATE() as ErrorState, ERROR_MESSAGE() as ErrorMessage; END CATCH GO SELECT * FROM score GO |