SQLServer 在存储过程里使用事务控制的简单小例子
2016-03-11 14:50
501 查看
alter proc sp_test
(
@name varchar(50)
)
as
begin
--开始事务
begin transaction
--设置一个存储报错代码的变量
DECLARE @errorSum INT
SET @errorSum=0
--在每一条涉及到数据变动的语句后都累加一次报错代码
insert into benInfo values(117,111,'111',111,2)
SET @errorSum+=@@ERROR
update benInfo set benMoney=222222222 where personID=10
SET @errorSum+=@@ERROR
--报错代码不为0表示在执行上述sql时出现错误,回滚事务,撤销所有更改
IF ( @errorSum <> 0 )
BEGIN
print '出错,回滚'+cast(@errorSum as varchar(50))
ROLLBACK TRANSACTION
END
ELSE
--报错代码为0表示无报错信息,可以执行更改操作
BEGIN
print '提交'+cast(@errorSum as varchar(50))
commit transaction
END
end
--select * from benInfo
--exec sp_test ''
(
@name varchar(50)
)
as
begin
--开始事务
begin transaction
--设置一个存储报错代码的变量
DECLARE @errorSum INT
SET @errorSum=0
--在每一条涉及到数据变动的语句后都累加一次报错代码
insert into benInfo values(117,111,'111',111,2)
SET @errorSum+=@@ERROR
update benInfo set benMoney=222222222 where personID=10
SET @errorSum+=@@ERROR
--报错代码不为0表示在执行上述sql时出现错误,回滚事务,撤销所有更改
IF ( @errorSum <> 0 )
BEGIN
print '出错,回滚'+cast(@errorSum as varchar(50))
ROLLBACK TRANSACTION
END
ELSE
--报错代码为0表示无报错信息,可以执行更改操作
BEGIN
print '提交'+cast(@errorSum as varchar(50))
commit transaction
END
end
--select * from benInfo
--exec sp_test ''
相关文章推荐
- SQLServer2008 将“单个用户”改为“多用户”
- MySQL性能优化
- SQLServer2008 关于Group by
- SQLServer2008 关于Having
- SQLServer2008 在where条件中使用CASE WHEN
- SQLServer2008 关于数据转换
- SQLServer外部数据导入--Excel版
- [转]html5 js 访问 sqlite 数据库的操作类
- SQLServer 表连接时使用top 1 去除重复数据
- SQLServer 使用变量动态行转列
- SQLServer 临时表
- SQLServer2008 字符串函数一览表
- SQLServer XXX IS NOT NULL
- SQLServer2008 有用的“其他函数”
- SQLServer2008 关于数值字段列的累计
- SQLServer2008 关于CASE WHEN
- SQLServer int转float
- SQLServer 添加序号列
- SQLServer 行转列,统计,二次分组
- SQLServer Union 和 Union All 在Insert 语句中的不同效果