SQLServer存储过程中事务的使用方法_MsSql

本文为大家分享了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

希望本文所述对大家学习数据库操作有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索sqlserver
事务
mssql 存储过程、mssql 调用存储过程、mssql执行存储过程、php调用mssql存储过程、mssql存储过程语法,以便于您获取更多的相关知识。

时间: 2024-08-04 03:04:38

SQLServer存储过程中事务的使用方法_MsSql的相关文章

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 nvarcha

获取SqlServer存储过程定义的三种方法_MsSql

存储过程的概念     存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行.     存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数.输出参数.返回单个或多个结果集以及返回值.     由于存储过程在创建时即在数据库服务器上进行了编译并存储在数据库中,所以存储过程运行要比单个的SQL语句块要快.同时由于在调用时只需用提供存储过程名和必要的参数信息,所以在一定程度上也可以减少网络流量.简单网络负担. 存

查询存储过程中特定字符的方法_MsSql

把xx替换成具体字符,如"深圳",sql语句如下: 复制代码 代码如下: select * from user_source t where instr(lower(t.text),'xx')>0;select * from all_source t where t.owner<>'SYS' and instr(t.text,'××')>0; 如果是sql server数据库,可以使用如下语句: 复制代码 代码如下: select * from sysobjec

SQL Server存储过程中编写事务处理的方法小结_MsSql

本文实例讲述了SQL Server存储过程中编写事务处理的方法.分享给大家供大家参考,具体如下: SQL Server中数据库事务处理是相当有用的,鉴于很多SQL初学者编写的事务处理代码存往往存在漏洞,本文我们介绍了三种不同的方法,举例说明了如何在存储过程事务处理中编写正确的代码.希望能够对您有所帮助. 在编写SQL Server 事务相关的存储过程代码时,经常看到下面这样的写法: begin tran update statement 1 ... update statement 2 ...

获取SqlServer存储过程定义的三种方法

存储过程的概念 存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行. 存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数.输出参数.返回单个或多个结果集以及返回值. 由于存储过程在创建时即在数据库服务器上进行了编译并存储在数据库中,所以存储过程运行要比单个的SQL语句块要快.同时由于在调用时只需用提供存储过程名和必要的参数信息,所以在一定程度上也可以减少网络流量.简单网络负担. 存储过程的优点 A. 存储

SQL Server存储过程中编写事务处理的方法小结

本文实例讲述了SQL Server存储过程中编写事务处理的方法.分享给大家供大家参考,具体如下: SQL Server中数据库事务处理是相当有用的,鉴于很多SQL初学者编写的事务处理代码存往往存在漏洞,本文我们介绍了三种不同的方法,举例说明了如何在存储过程事务处理中编写正确的代码.希望能够对您有所帮助. 在编写SQL Server 事务相关的存储过程代码时,经常看到下面这样的写法: begin tran update statement 1 ... update statement 2 ...

为了保存用户账号的安全性,在登陆,存储过程中会采用什么方法??

问题描述 为了保存用户账号的安全性,在登陆,存储过程中会采用什么方法?? 解决方案 解决方案二:加密...ssl等...解决方案三:引用1楼attilax的回复: 加密...ssl等... 笔试题,如果是你你怎么写?解决方案四:加密啊,数据库语句直接使用加密解决方案五:数据库字段加密存储.登录时解密对比.解决方案六:登陆一般是https协议解决方案七:一般都用MD5加密,也用https来弄~~~~不过现在权限方面的话,比如登陆,就很流行用springsecurity,比较靠谱的~~建议楼主学习一

Sqlserver 存储过程中结合事务的代码_MsSql

复制代码 代码如下: --方式一 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[USP_ProcedureWithTransaction_Demo]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[USP_ProcedureWithTransaction_Demo] GO -- ===================

Sqlserver 存储过程中结合事务的代码

复制代码 代码如下: --方式一 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[USP_ProcedureWithTransaction_Demo]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[USP_ProcedureWithTransaction_Demo] GO -- ===================