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  



  • 相关阅读:
    【SSM】Eclipse使用Maven创建Web项目+整合SSM框架(转自:http://www.cnblogs.com/DoubleEggs/p/6243216.html)
    odoo Wkhtmltopdf failed (error code: -11). Memory limit too low or maximum file number of subprocess reached. Message : b''
    odoo 补货规则,当某个位置的产品匹配到多个规则时优先使用序列号最小的规则
    odoo 销售订单确认怎么触发的发货规则
    linux 内核升级
    linux 运维工具之jumpserver
    odoo 关于odoo 的批量拣货
    JIT
    sping+redis实现消息队列的乱码问题
    JVM参数设置
  • 原文地址:https://www.cnblogs.com/aaa6818162/p/1531317.html
Copyright © 2011-2022 走看看