具体用法如下:
复制代码 代码如下:
— =============================================
— author: cynimoon
— create date: 2009-10-09
— description: 示例存储过程
— =============================================
— exec test_proc ‘文综’,’包括历史,地理,政治’,’政治’,’文综的一门’
create procedure [dbo].[test_proc]
@a_name nvarchar(20), — a表姓名
@a_remark nvarchar(4000), — a表备注
@b_name nvarchar(20), — b表姓名
@b_remark nvarchar(4000) — b表备注
as
begin try
begin tran
— 在a表中插入数据
insert into [dbo].[a]
( [a_name]
, [a_remark] )
values
( @a_name
, @a_remark )
— 在b表中插入数据
insert into [dbo].[b]
( [a_id]
, [b_name]
, [b_remark] )
values
( @@identity — 返回最后插入的标识值
, @b_name
, @b_remark )
commit tran
end try
begin catch
rollback tran
insert into [dbo].[errorlog]
( [el_procedure] — 异常存储过程名称
, [el_operatetime] ) — 报异常时间
values
( ‘test_proc’
, convert(datetime,getdate(),20) )
end catch
注:1. @@identity的作用是返回最后插入的标识值。
2. 我在rollback tran中加入一个专门记录异常的表,以便产于异常发生的时间和确定报异常的存储过程的名称。
原文链接:
begin tran 可以理解成新建一个还原点。
commit tran提交这个自begin tran开始的修改
rollback tran 表示还原到上个还原点。