--1.第一种。try catch
Begin
Try
Begin
Tran Tran1
insert
into
t1(Id, c1)
values
(1,
'1'
)
insert
into
t1(Id, c1)
values
(
'XX2'
,
'2'
)
--此句产生错误
COMMIT
TRAN Tran1
END
Try
Begin
Catch
raiserror 50005N
'出错了'
ROLLBACK
TRAN Tran1
---出错后调用回滚Tran1内的T-Sql
END
Catch
--存储过程中嵌入事务,通过存储过程返回错误信息。
alter
Procedure
[dbo].getTran
as
begin
declare
@Re
int
--返回错误信息
set
@Re=1
Begin
Try
Begin
Tran Tran1
insert
into
t1(age,
name
)
values
(1,
'1'
)
insert
into
t1(age,
name
)
values
(
'XX2'
,
'2'
)
--此句产生错误
COMMIT
TRAN Tran1
END
Try
Begin
Catch
raiserror 50005N
'出错了'
--抛出异常,可以不写
set
@Re=0
ROLLBACK
TRAN Tran1
---出错后调用回滚
END
Catch
Return
@re
end
--例子
declare
@re
int
exec
@re=getTran
select
@re