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

循环插入一条数据的sql写法的更多相关文章

  1. sql插入多条数据的sql语句

    sql插入多条数据的sql语句 有三种方法:1.InSert Into <表名>(列名)Select <列名>From <源表名>如:INSERT INTO Ton ...

  2. python连接mysql循环插入千万条数据脚本

    之前都是在mysql的存储过程中插入数据,毕竟mysql语法函数有限,很多都有限制.突然想到学了python正好可以练练手.首先需要安装pymysql模块包(模块包安装请自行百度) pip insta ...

  3. MongoDB插入多条数据

    刚开始学mongodb,只知道几个命令,insert插入也只能一条一条插入,而在实际情况下数据一般都非常多,刚开始想直接上传json文件,网上搜了n多方法发现这种方法不好弄,然后就想着要么一下子把多条 ...

  4. for循环往Oracle中插入n条数据,主键自增

    1.主键自增实现方法:http://www.cnblogs.com/Donnnnnn/p/5959871.html 2.for循环往Oracle中插入n条数据 BEGIN .. loop insert ...

  5. sql每五秒插入一条数据 一次插入N条数据

    1建立数据表 create table projectManage ( ID int identity primary key not null, projectName )not null, man ...

  6. SQL中一次插入多条数据

    SQL中insert一次可以插入一条数据,我们有三种方法可以一次性插入多条数据. 1. 语法:select 字段列表 into 新表 from 源表 注意事项:此种方法新表是系统自动创建,语句执行前不 ...

  7. Oracle 一条sql插入多条数据

    Oracle一次插入多条数据. 表结构: create table aa ( ID NUMBER(11) PRIMARY KEY, NAME VARCHAR2(20) ) 第一种方式: insert ...

  8. 用一条mysql语句插入多条数据

    这篇文章主要介绍了在mysql中使用一条sql语句插入多条数据,效率非常高,但是原理其实很简单,希望对大家有所帮助 假如有一个数据表A: id name title addtime 如果需要插入n条数 ...

  9. 数据库一次性插入10w条数据,怎么插入效率快

    在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题 下面介绍SQL Server支持的两种批量 ...

随机推荐

  1. 边双联通问题求解(构造边双连通图)POJ3352(Road Construction)

    题目链接:传送门 题目大意:给你一副无向图,问至少加多少条边使图成为边双联通图 题目思路:tarjan算法加缩点,缩点后求出度数为1的叶子节点个数,需要加边数为(leaf+1)/2 #include ...

  2. Stolz–Cesàro theorem

    w http://planetmath.org/sites/default/files/texpdf/33795.pdf Stolz–Cesàro theorem - Wikipedia  https ...

  3. [NOIP2018PJ]摆渡车

    [NOIP2018PJ]摆渡车 luogu mdPJ组这么难,还好考的TG组 先按t排序 设f[i][j]表示前i个人,第i个人等j分钟的最小总等待时间 这里j是小于2m的 可以考虑最坏情况下,一个人 ...

  4. hive查询表,返回结果是null

    问题:hive查询表,返回结果都是null hive> create table testTable(id int, name string); hive> load data local ...

  5. Thrift官方安装手册(译)

    本篇是Thrift官网安装文档的翻译,原地址点击这里.Thrift之前是不支持Windows的.但是似乎0.9版本以后已经支持Window了.介绍了Thrift安装的环境要求以及在centos,Deb ...

  6. Retrofit2.2说明-简单使用

    很久前就想学习下Retrofit了,不过总是没有时间,正好最近新项目要用到网络请求,正好研究了下Retrofit2.2的简单使用方法,大致记录如下: Retrofit与okhttp共同出自于Squar ...

  7. Way to OpenSource

    @1:Follow any instructions in the readme and make sure that you can configure and run the project on ...

  8. lambda可调用对象

    //find_if谓词使用 bool isShorter(const string &s1, const string &sz){ return s1.size() < sz.s ...

  9. mysql case的语法

    测试表:team 第一种语法: CASE case_value WHEN when_value THEN statement_list [WHEN when_value THEN statement_ ...

  10. uart测试代码

    #include <stdio.h> /*标准输入输出定义*/ #include <stdlib.h> /*标准函数库定义*/ #include <unistd.h> ...