zoukankan      html  css  js  c++  java
  • 循环插入一条数据的sql写法


    DECLARE @i INT
    SET @i = 1
    WHILE @i > 0
    BEGIN

    DECLARE @TransportFormMstID BIGINT;
    DECLARE @TradeOrderID BIGINT;
    DECLARE @TransportFormMstID_T BIGINT;
    DECLARE @DeliveryCode VARCHAR(40);

    SELECT TOP 1
    @TransportFormMstID_T = TransportFormMstID ,
    @TradeOrderID = TradeOrderID ,
    @DeliveryCode = DeliveryCode
    FROM dbo.TWX_TransportFromMst_T WITH ( NOLOCK )
    WHERE DeleteUser = 1;

    IF NOT EXISTS ( SELECT * FROM dbo.TWX_TransportFromMst WITH ( NOLOCK )WHERE DeliveryCode = @DeliveryCode )
    BEGIN

    INSERT INTO dbo.TWX_TransportFromMst
    ( TransportFormMstCode
    )
    SELECT TransportFormMstCode ,
    FROM dbo.TWX_TransportFromMst_T WITH ( NOLOCK )
    WHERE TransportFormMstID = @TransportFormMstID_T

    SELECT @TransportFormMstID = @@IDENTITY;
    END

    ELSE
    BEGIN
    SELECT TOP 1
    @TransportFormMstID = TransportFormMstID
    FROM dbo.TWX_TransportFromMst WITH ( NOLOCK )
    WHERE DeliveryCode = @DeliveryCode;
    END

    PRINT @DeliveryCode + '-正在执行'

    IF NOT EXISTS ( SELECT *
    FROM dbo.TWX_TransportFromDtl WITH ( NOLOCK )
    WHERE TradeOrderID = @TradeOrderID
    AND ProductID IN (
    SELECT ProductID
    FROM dbo.TWX_TransportFromDtl WITH ( NOLOCK )
    WHERE TradeOrderID = @TradeOrderID ) )
    BEGIN
    INSERT INTO dbo.TWX_TransportFromDtl
    ( TradeOrderID ,
    ProductID ,
    ProductCatalogID ,
    ProductCatalogIDPath ,

    TotalItemActualPrice ,
    ItemDetailUrl ,
    TransportFormMstID ,
    ProductMaterial ,
    ProductMaterialEn
    )
    SELECT TradeOrderID ,

    TotalItemActualPrice ,
    ItemDetailUrl ,
    @TransportFormMstID ,
    ProductMaterial ,
    ProductMaterialEn
    FROM dbo.TWX_TransportFromDtl_T WITH ( NOLOCK )
    WHERE TradeOrderID = @TradeOrderID
    AND ProductID IN (
    SELECT ProductID
    FROM dbo.TWX_TransportFromDtl WITH ( NOLOCK )
    WHERE TradeOrderID = @TradeOrderID )

    END
    ELSE
    BEGIN
    UPDATE dbo.TWX_TransportFromDtl
    SET TransportFormMstID = @TransportFormMstID
    WHERE TransportFormDtlID IN (
    SELECT TransportFormDtlID
    FROM dbo.TWX_TransportFromDtl WITH ( NOLOCK )
    WHERE TradeOrderID = @TradeOrderID
    AND ProductID IN (
    SELECT ProductID
    FROM dbo.TWX_TransportFromDtl WITH ( NOLOCK )
    WHERE TradeOrderID = @TradeOrderID ) )

    END

    UPDATE dbo.TWX_TransportFromMst_T
    SET deleteUser = 2
    WHERE TransportFormMstID = @TransportFormMstID_T

    END

    ----------------------------------------比较完整的写法


    DECLARE @i INT
    SET @i = 1
    WHILE @i > 0
    BEGIN

    DECLARE @TransportFormMstID BIGINT;
    DECLARE @TradeOrderID BIGINT;
    DECLARE @TransportFormMstID_T BIGINT;
    DECLARE @DeliveryCode VARCHAR(40);

    SELECT TOP 1
    @TransportFormMstID_T = TransportFormMstID ,
    @TradeOrderID = TradeOrderID ,
    @DeliveryCode = DeliveryCode
    FROM dbo.TWX_TransportFromMst_T WITH ( NOLOCK )
    WHERE DeleteUser = 1;

    IF NOT EXISTS ( SELECT *
    FROM dbo.TWX_TransportFromMst WITH ( NOLOCK )
    WHERE DeliveryCode = @DeliveryCode )
    BEGIN

    INSERT INTO dbo.TWX_TransportFromMst
    ( TransportFormMstCode ,
    TransportFormMstGuid ,
    TransportFormName ,
    ComeFrom
    )
    SELECT TransportFormMstCode ,
    TransportFormMstGuid ,
    TransportFormName ,
    ComeFrom

    FROM dbo.TWX_TransportFromMst_T WITH ( NOLOCK )
    WHERE TransportFormMstID = @TransportFormMstID_T

    SELECT @TransportFormMstID = @@IDENTITY;
    END
    ELSE
    BEGIN
    SELECT TOP 1
    @TransportFormMstID = TransportFormMstID
    FROM dbo.TWX_TransportFromMst WITH ( NOLOCK )
    WHERE DeliveryCode = @DeliveryCode;
    END

    PRINT @DeliveryCode + '-正在执行'

    IF NOT EXISTS ( SELECT *
    FROM dbo.TWX_TransportFromDtl WITH ( NOLOCK )
    WHERE TradeOrderID = @TradeOrderID
    AND ProductID IN (
    SELECT ProductID
    FROM dbo.TWX_TransportFromDtl WITH ( NOLOCK )
    WHERE TradeOrderID = @TradeOrderID ) )
    BEGIN
    INSERT INTO dbo.TWX_TransportFromDtl
    ( TradeOrderID ,
    ProductID ,
    ProductCatalogID
    )
    SELECT TradeOrderID ,
    ProductID ,
    ProductCatalogID ,
    @TransportFormMstID ,
    ProductMaterial ,
    ProductMaterialEn
    FROM dbo.TWX_TransportFromDtl_T WITH ( NOLOCK )
    WHERE TradeOrderID = @TradeOrderID
    AND ProductID IN (
    SELECT ProductID
    FROM dbo.TWX_TransportFromDtl WITH ( NOLOCK )
    WHERE TradeOrderID = @TradeOrderID )

    END
    ELSE
    BEGIN
    UPDATE dbo.TWX_TransportFromDtl
    SET TransportFormMstID = @TransportFormMstID
    WHERE TransportFormDtlID IN (
    SELECT TransportFormDtlID
    FROM dbo.TWX_TransportFromDtl WITH ( NOLOCK )
    WHERE TradeOrderID = @TradeOrderID
    AND ProductID IN (
    SELECT ProductID
    FROM dbo.TWX_TransportFromDtl WITH ( NOLOCK )
    WHERE TradeOrderID = @TradeOrderID ) )

    END

    UPDATE dbo.TWX_TransportFromMst_T
    SET deleteUser = 2
    WHERE TransportFormMstID = @TransportFormMstID_T

    END

  • 相关阅读:
    [JSOI2007][BZOJ1030] 文本生成器|AC自动机|动态规划
    [NOI2014][BZOJ3670] 动物园|KMP
    [HAOI2010][BZOJ2427] 软件安装|tarjan|树型dp
    [JSOI2008][BZOJ1017] 魔兽地图DotR|树型dp
    [JLOI2014][BZOJ3631] 松鼠的新家|树上倍增LCA|差分
    [SDOI2010][BZOJ1975] 魔法猪学院|A*|K短路
    [BZOJ1251] 序列终结者|Splay
    hdu 2141 Can you find it?
    hdu 3152 Obstacle Course
    hdu 2680 Choose the best route
  • 原文地址:https://www.cnblogs.com/chengjun/p/7843050.html
Copyright © 2011-2022 走看看