以下的文章主要向大家介绍的是SQL Server 2005数据库中的T-SQL增强,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')
谈SQL Server 2005中的T-SQL增强中需要调用一个运行时错误
- 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
快照隔离 Snapshot Isolation 1、写入程序不会阻碍读取程序 2、新的隔离级别提供了以下优点: 1) 提高了只读应用程序的数据可用性 2) 允许在OLTP环境中执行非阻止读取操作 3) 可对写入事务进行自动的强制冲突检测 3、演示代码
- CREATE DATABASE demo2
- GO
- USE demo2
- ALTER DATABASE demo2 SET allow_snapshot_isolation ON
- CREATE TABLE test
- (
- tid INT NOT NULL primary key,
- tname VARCHAR(50) NOT NULL
- )
- INSERT INTO test VALUES(1,'version1')
- INSERT INTO test VALUES(2,'version2')
- 连接一
- USE demo2
- BEGIN TRAN
- UPDATE test SET tname='version3' WHERE tid=2
- SELECT * FROM test
- 连接二
- USE demo2
- SET transaction isolation level snapshot
- SELECT * FROM test
TOP 增强功能 1、TOP 增强。可以指定一个数字表达式,以返回要通过查询影响的行数或百分比,还可以根据情况使用变量或子查询。 可以在DELETE、UPDATE和INSERT查询中使用TOP选项。 2、更好地替换SET ROWCOUNT选项,使之更为有效。
- OUTPUT
1、SQL Server 2005引入一个新的OUTPUT子句,以使您可以冲修改语句(INSERT、UPDATE、DELETE)中将数据返回到表变量中。 2、新的OUTPUT子局的语法为:
- OUTPUT INTO @table_variable
可以通过引用插入的表或删除的表来访问被修改的行的旧/新影象,其方式与访问触发器类似。在INSERT语句中,只能访问插入的表。在DELETE语句中,只能访问删除的表。在UPDATE语句中,可以访问插入的表和删除的表。
以上的相关内容就是对谈SQL Server 2005中的T-SQL增强的介绍,望你能有所收获。
【编辑推荐】