zoukankan      html  css  js  c++  java
  • 事务的使用

    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    GO

    ALTER PROCEDURE [dbo].[Pc_DeliverGoods]
    @OutID INT 
    = NULL output, 
    @cmd varchar(
    10= null
    @CompanyOrderCode varchar(
    50= null,
    @IsConfirm varchar(
    10)=null
    AS 

    IF @cmd 
    = 'DeliverGoods' 
       BEGIN 
          BEGIN TRAN 
            
    --更新Pdt_Price表中的订购商品的数量
           ;WITH OrderPriceIdInfo 
    as (SELECT PriceId,Num FROM Pdt_Order WHERE CompanyOrderCode=@CompanyOrderCode)
           Update [Product]..[Pdt_Price] 
    set Reserve = Reserve-b.Num from (select PriceId,Num from OrderPriceIdInfo) b 
           WHERE [Product]..[Pdt_Price].PriceId 
    in (select PriceId from OrderPriceIdInfo);

            
    --更新Pdt_Detail表中的订购商品的数量
           WITH OrderPdtIdInfo 
    as (SELECT PdtId,sum(Num) as Num FROM Pdt_Order WHERE CompanyOrderCode=@CompanyOrderCode group by PdtId)
           Update [Product]..[Pdt_Detail] 
    set ReserveNum = ReserveNum-b.Num from (select PdtId,Num from OrderPdtIdInfo) b 
           WHERE [Product]..[Pdt_Detail].PdtId 
    in (select PdtId from OrderPdtIdInfo);
            
            
    --更新订单状态
            UPDATE [CO_Orde] SET IsConfirm 
    =@IsConfirm,SendDate=getdate() WHERE CompanyOrderCode=@CompanyOrderCode
          SET @OutID
    =0

         IF @@ERROR
    !=0 
            BEGIN 
                SET @OutID 
    = -1 
                ROLLBACK 
             END 
          ELSE 
             BEGIN 
                COMMIT 
            END 
        END 

    ELSE IF @cmd 
    = 'BackGoods'
       BEGIN 
          BEGIN TRAN 
            
    --更新Pdt_Price表中的订购商品的数量
           ;WITH OrderPriceIdInfo 
    as (SELECT PriceId,Num FROM Pdt_Order WHERE CompanyOrderCode=@CompanyOrderCode)
           Update [Product]..[Pdt_Price] 
    set Reserve = Reserve+b.Num from (select PriceId,Num from OrderPriceIdInfo) b 
           WHERE [Product]..[Pdt_Price].PriceId 
    in (select PriceId from OrderPriceIdInfo);

            
    --更新Pdt_Detail表中的订购商品的数量
           WITH OrderPdtIdInfo 
    as (SELECT PdtId,sum(Num) as Num FROM Pdt_Order WHERE CompanyOrderCode=@CompanyOrderCode group by PdtId)
           Update [Product]..[Pdt_Detail] 
    set ReserveNum = ReserveNum+b.Num from (select PdtId,Num from OrderPdtIdInfo) b 
           WHERE [Product]..[Pdt_Detail].PdtId 
    in (select PdtId from OrderPdtIdInfo);
            
            
    --更新订单状态
            UPDATE [CO_Orde] SET IsConfirm 
    =@IsConfirm WHERE CompanyOrderCode=@CompanyOrderCode
          SET @OutID
    =0

         IF @@ERROR
    !=0 
            BEGIN 
                SET @OutID 
    = -1 
                ROLLBACK 
             END 
          ELSE 
             BEGIN 
                COMMIT 
            END 
        END  



  • 相关阅读:
    vert.x笔记:6.vert.x集群化部署
    vert.x笔记:5.vert.x集成dubbo服务
    Wampserver 配置端口可访问服务
    git credential for windows 总是弹出的问题
    如何用B表的数据,更新A表的值
    WampServer部署https 服务的过程
    PHP 命名空间冲突解决方式
    Windows下 Docker 简单部署 Django应用
    C#实现后台格式化U盘的功能
    Winform 实现断点续传的思路及代码
  • 原文地址:https://www.cnblogs.com/aaa6818162/p/1531317.html
Copyright © 2011-2022 走看看