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  



  • 相关阅读:
    beta冲刺5
    beta冲刺4
    beta冲刺3
    beta冲刺2
    [LeetCode] 10. Regular Expression Matching(正则匹配)
    [LeetCode] 32. Longest Valid Parentheses(最长合法括号对)
    [LeetCode] 4. Median of Two Sorted Arrays.(两个有序数组的中位数)
    [LeetCode] 45. Jump Game Ⅱ(跳跃游戏之二)
    [LeetCode] 41. First Missing Positive(第一个缺失的正数)
    [LeetCode] 124. Binary Tree Maximum Path Sum(二叉树的最大路径和)
  • 原文地址:https://www.cnblogs.com/aaa6818162/p/1531317.html
Copyright © 2011-2022 走看看