现在的位置: 首页 >> 数据库 >> MsSQL >> SQL Server 2005中的T-SQL增强
添加时间:2005-12-15 来源:网教中国 作者:
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

快照隔离 Snapshot Isolation

1、写入程序不会阻碍读取程序
2、Snapshot isolation must be enabled for DB
      ALTER DATABASE 数据库 SET allow_snapshot_isolation ON
3、Snapshot isolation must be enabled for connection
      Set transaction isolation level snapshot
4、UPDATE transactions keep old versions of data in a linked list
5、新的隔离级别提供了以下优点:
  1) 提高了只读应用程序的数据可用性
  2) 允许在OLTP环境中执行非阻止读取操作
  3) 可对写入事务进行自动的强制冲突检测
6、演示代码
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 <dml_select_list> INTO @table_variable
可以通过引用插入的表或删除的表来访问被修改的行的旧/新影象,其方式与访问触发器类似。在INSERT语句中,只能访问插入的表。在DELETE语句中,只能访问删除的表。在UPDATE语句中,可以访问插入的表和删除的表。

3、代码演示
USE demo
GO
CREATE TABLE tt
(
  id INT IDENTITY,
  c1 VARCHAR(15)
)
GO

INSERT INTO tt VALUES ('r1')
INSERT INTO tt VALUES ('r2')
INSERT INTO tt VALUES ('r5')
INSERT INTO tt VALUES ('r6')
INSERT INTO tt VALUES ('r7')
INSERT INTO tt VALUES ('r8')
INSERT INTO tt VALUES ('r9')
INSERT INTO tt VALUES ('r10')

DECLARE @del AS TABLE (deletedId INT, deletedValue VARCHAR(15))
DELETE tt
OUTPUT DELETED.id, DELETED.c1 INTO @del
WHERE id < 3
SELECT * FROM @del
GO
-----------------------------------------------
USE demo
GO
CREATE TABLE toptest (column1 VARCHAR(150))
GO
INSERT INTO toptest VALUES('t1')
INSERT INTO toptest VALUES('t2')
INSERT INTO toptest VALUES('t3')
INSERT INTO toptest VALUES('t4')
INSERT INTO toptest VALUES('t5')
INSERT INTO toptest VALUES('t6')
INSERT INTO toptest VALUES('t7')
INSERT INTO toptest VALUES('t8')
SELECT * FROM toptest
GO



[1] [2] [3]  下一页


上一篇: 下一篇:监测你的SQL SERVER--让瓶颈暴露
大部分文章摘自网上,如有侵犯您的权益请与我们联系,我们会第一时间进行处理,谢谢! [ 打印文章 ] [ 关闭窗口 ]
推荐文章
·应用存储过程按月建数据表
·更改数据库
·实例数据库
·创建存储过程
·视图简介
·基于HTTP 的数据访问
·数据库表结构
·ms sql server数据库无法输入简
·浅谈MS SQL锁机制
·sql日记(相关子查询,动态交叉表
相关文章
·在SQL Server 2000里设置和使用
·SQL Server 2000之日志传送功能
·SQL Server 2000之日志传送功能-
·SQL Server 2000之日志传送功能
·SQL Server 2000 SP4发布
·SQL Server 2005发布日期重新确
·微软宣布SQL Server 2005功能及
·微软推预览版SQL Server 2005
·保护SQL Server 2000的十个步骤
·小议MSSQL Server 2000的安全及
最新文章
·SQL Server 2000 简介
·SQL Server 2000 的新特性
·SQL Server 2000 的工具
·SQL Server 2000 的版本和系统需
·安装SQL Server 2000
·从SQL Server 7.0 升级
·数据库-基本概念
·关系数据库
·常见的数据库对象
·关系数据库的范式
Google