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 :使用jquery 的ajax +WebService+json 实现无刷新去后台值
    如何清理数据库缓存
    如何在虚拟机中Linux+Oracle10gRAC安装
    ORA01031 权限不足存储过程中DBA 角色用户无法执行DDL
    如何查看存储过程执行计划
    如何查看执行计划
    如何使用tkprof
    C#位运算讲解与示例[转]
    C#中Invalidate() 方法
    如何创建强命名程序集, 如何查看强命名程序集的PublicKeyToken
  • 原文地址:https://www.cnblogs.com/chengjun/p/7843050.html
Copyright © 2011-2022 走看看