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;
注意:
同义词的基对象可以是
程序集、表(全局或局部临时表)、视图、存储过程、函数。