SQLServer存储过程中事务的使用方法
作者:iceKnight 发布时间:2024-01-29 06:56:03
标签:sqlserver,事务
本文为大家分享了SQLServer存储过程中事务的使用方法,具体代码如下
create proc usp_Stock
@GoodsId int,
@Number int,
@StockPrice money,
@SupplierId int,
@EmpId int,
@StockUnit varchar(50),
@StockDate datetime,
@TotalMoney money ,
@ActMoney money ,
@baseId int,
@Description nvarchar(255)
as
declare @error int =0 --事务中操作的错误记录
--开启事务
begin transaction
--实现进货信息的添加
insert into StockInfo values(@GoodsId, @Number, @StockPrice, @SupplierId, @EmpId, @StockUnit, @StockDate, @TotalMoney, @ActMoney,DEFAULT,@Description, @baseId)
set @error+=@@ERROR --记录有可能产生的错误号
--获取当前进货信息的标识列
--判断当前商品有没有进货记录
if exists (select * from dbo.InventoryInfo where goodid=@GoodsId) --说明记录存在,直接修改库存数量
begin
update dbo.InventoryInfo set GNumber=GNumber+@Number,TotalMoney+=@TotalMoney where goodid=@GoodsId
set @error+=@@ERROR --记录有可能产生的错误号
end
else --这个商品从来没有过进货记录,那么就应该添加新的存在信息
begin
declare @GWarningNum int --此商品的预警数量
--获取预警数量
set @GWarningNum=(select WaringNum from dbo.GoodsInfo where GId=@GoodsId)
insert into dbo.InventoryInfo values(@GoodsId,@Number,@baseId,@GWarningNum,@TotalMoney,'第一次进货',default)
set @error+=@@ERROR --记录有可能产生的错误号
end
--判断事务的提交或者回滚
if(@error<>0)
begin
rollback transaction
return -1 --设置操作结果错误标识
end
else
begin
commit transaction
return 1 --操作成功的标识
end
go
希望本文所述对大家学习数据库操作有所帮助。


猜你喜欢
- 一、序言在分布式并发系统中,数据库与缓存数据一致性是一项富有挑战性的技术难点。本文将讨论数据库与缓存数据一致性问题,并提供通用的解决方案。假
- 首先要写连接字符串可以在web.config里写上<connectionStrings>
- 最近因项目需要用ACCESS做数据库开发WEB项目看论坛上还许多人问及ACCESS被注入的安全问题许多人解决的方法仍然是用Replace替换
- 在phpcms\modules\wap\index.php里面,搜索下面这句if(!$r || $r['status'] !
- 在MySQL中可以使用IF()、IFNULL()、NULLIF()、ISNULL()函数进行流程的控制。1、IF()函数的使用IF(expr
- Python中的三引号,3个单引号及3个双引号实际上3个单引号和3个双引号不经常用,但是在某些特殊格式的字符串下却有大用处。通常情况下我们用
- pygame城市之战横版射击游戏,按上下左右方向箭头操作飞机。这是一个横板射击小游戏,在黑夜的城市上空,你将要操作一架飞机去射击敌机, * 效
- 导出数据报错SHOW VARIABLES LIKE "secure_file_priv";查看默认导出目录mysql&g
- 概述PHP有着众多的内置函数,其中大多数函数都被开发者广发使用。但也有一些同样有用却被遗忘在角落,本文将介绍7个鲜为人知功能却非常酷的函数。
- asp程序运行速度试验实验:1。作相同的分支条件判断:IF 比 SELECT慢。用以下程序测试:
- 使用环境:Win10 x64 Python:3.6.4 SqlServer:2008R2 因为
- 一、前言现在到了,第二步,上一步我们已经做好了发牌模块,有了手牌,就需要判断牌型了,平时打扑克时,我们需要使用大脑进行判断自己手里的牌属于那
- MySQL为开源数据库,因此可以基于源码实现安装。基于源码安装有更多的灵活性。也就是说我们可以针对自己的硬件平台选用合适的编译器来优化编译后
- 本文较为详细的分析了php单一入口应用程序。分享给大家供大家参考。具体如下:什么是单一入口应用程序?在解释什么是单一入口应用程序之前,我们先
- 通过对 26 个字母的设定,设置自己要输出的字体。name = "RUNOOB"# 接收用户输入# name = inp
- 前言前面一篇分享了关于数值的一些处理方式,本篇呢进行一下字符串处理的分享 题目也是超级简单,记录一下对字符串处理的方式错位键盘🍓(也就是错位
- 本文实例为大家分享了小程序实现横向滑动日历效果的具体代码,供大家参考,具体内容如下<scroll-view class="s
- 本文实例为大家分享了python遗传算法的具体代码,供大家参考,具体内容如下1、基本概念遗传算法(GA)是最早由美国Holland教授提出的
- 本文实例为大家分享了python3实现qq邮箱登陆并发送邮件功能的具体代码,供大家参考,具体内容如下基于selenium,使用chrome浏
- 简介:上文中已经介绍如何安装Pycharm已经环境变量的配置。现在软件已经安装成功,现在就开始动手做第一个Python项目。第一个“Hell