SQL Server 2005 学习笔记 Part 2 DML增强功能

一.OUTPUT子句

该子句返回受INSERT、UPDATE、DELETE语句影响的每行信息,或者返回基于上述每行的表达式

 

1.UPDATE

   UPDATE A SET

           id=O.object_id % 100

   OUTPUT

          O.name,

          DELETED.id AS id_BeforeUpdate,

          INSERTED.id AS id_AfterUpdate

   FROM @t A,sys.object O

   WHERE A.id=O.object_id

UPDATE语句完成前后的列值可以一一对应起来。

2.DELETE

DECLARE @re TABLE(                //声明一个临时表变量

         id int,name sysname)

DELETE A

OUTPUT

         DELETED.id,O.name

INTO @re

FROM @t A,sys.objects O

WHERE A.id = O.object_id

 

---显示结果---

SELECT * FROM @re

 

 

二.TRY…CATCH

语法格式:

BEGIN TRY

       {sql_statement}

END TRY

BEGIN CATCH

       {sql_statement}

END CATCH

 

注意:

1.TRY…CATCH 构造不能跨越多个批处理,即不能把一个TRY…CATCH块置于两个BEGIN…END块中。

2.CATCH块捕获的错误不会返回到调用者,需要自行编写相关处理,可以使用RAISERROR或者PRINT来抛出相关信息给调用者。

3.不能在用户自定义函数内使用TRY…CATCH构造。

 

Example:

BEGIN TRY

          BEGIN TRAN

                 INSERT @tb VALUES(@id)

          COMMIT TRAN

END TRY

BEGIN CATCH

          IF XACT_STATE()<>0

               ROLLBACK TRAN

END CATCH

 

三.同义词

CREATE SYNONYM dbo.p_dir

FOR

master.dbo.xp_dirtree;

注意:

同义词的基对象可以是

程序集、表(全局或局部临时表)、视图、存储过程、函数。

posted @ 2009-05-13 15:49  斑点海豚---寂静的港湾  阅读(151)  评论(0编辑  收藏  举报