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

  • 相关阅读:
    asp.net 下载文件
    Asp.Net中用iframe解决模态窗口文件下载问题(转)
    如何获取网站的根目录(js或者asp.net)
    java中日期加减计算(转)
    网页颜色选择器
    信仰基督教的好处
    基因芯片数据字段
    独立分量分析(ICA)
    GenePix® Pro 文件格式
    OBO文件中的标签的含义/意思/意义
  • 原文地址:https://www.cnblogs.com/chengjun/p/7843050.html
Copyright © 2011-2022 走看看