循环插入一条数据的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
循环插入一条数据的sql写法的更多相关文章
- sql插入多条数据的sql语句
sql插入多条数据的sql语句 有三种方法:1.InSert Into <表名>(列名)Select <列名>From <源表名>如:INSERT INTO Ton ...
- python连接mysql循环插入千万条数据脚本
之前都是在mysql的存储过程中插入数据,毕竟mysql语法函数有限,很多都有限制.突然想到学了python正好可以练练手.首先需要安装pymysql模块包(模块包安装请自行百度) pip insta ...
- MongoDB插入多条数据
刚开始学mongodb,只知道几个命令,insert插入也只能一条一条插入,而在实际情况下数据一般都非常多,刚开始想直接上传json文件,网上搜了n多方法发现这种方法不好弄,然后就想着要么一下子把多条 ...
- for循环往Oracle中插入n条数据,主键自增
1.主键自增实现方法:http://www.cnblogs.com/Donnnnnn/p/5959871.html 2.for循环往Oracle中插入n条数据 BEGIN .. loop insert ...
- sql每五秒插入一条数据 一次插入N条数据
1建立数据表 create table projectManage ( ID int identity primary key not null, projectName )not null, man ...
- SQL中一次插入多条数据
SQL中insert一次可以插入一条数据,我们有三种方法可以一次性插入多条数据. 1. 语法:select 字段列表 into 新表 from 源表 注意事项:此种方法新表是系统自动创建,语句执行前不 ...
- Oracle 一条sql插入多条数据
Oracle一次插入多条数据. 表结构: create table aa ( ID NUMBER(11) PRIMARY KEY, NAME VARCHAR2(20) ) 第一种方式: insert ...
- 用一条mysql语句插入多条数据
这篇文章主要介绍了在mysql中使用一条sql语句插入多条数据,效率非常高,但是原理其实很简单,希望对大家有所帮助 假如有一个数据表A: id name title addtime 如果需要插入n条数 ...
- 数据库一次性插入10w条数据,怎么插入效率快
在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题 下面介绍SQL Server支持的两种批量 ...
随机推荐
- Cocos2d-x Lua中帧动画
帧动画就是按一定时间间隔.一定的顺序.一帧一帧地显示帧图片.我们的美工要为精灵的运动绘制每一帧图片,因此帧动画会由很多帧组成,按照一定的顺序切换这些图片就可以了. 在Cocos2d-x Lua中播放帧 ...
- Starting Session of user root.
Sep 23 01:50:01 d systemd: Started Session 1475 of user root.Sep 23 01:50:01 d systemd: Starting Ses ...
- MSVCRT.DLL Console I/O Bug(setlocale(LC_CTYPE, "Chinese_China.936"))
I have been quite annoyed by a Windows bug that causes a huge number of open-source command-line too ...
- Nuxt使用element-ui
废话不多说,在Nuxt中引入Nuxt其实很简单,分下面几步 一.安装element-ui依赖 打开nuxt项目以后,在Terminal中通过 npm i element-ui -S 即可安装eleme ...
- Vue.js中css的作用域
Vue.js中的css的作用域问题: 如果在vue组件下的style中定义样式,效果会作用于整个html页面,如果只想本组件的css样式只作用于本组件的话,在<style>标签里添加sco ...
- javaweb action无法跳转、表单无法跳转的解决方法
action无法跳转,表单无法跳转的解决方法 刚在网上搜索了一下,发现我的这篇文章已被非常多人转载了去其他站点.暗爽,只是还是希望大家注明出处. 顺便说明一下.下面是在struts2中通过測试的 ac ...
- 024-Spring Boot 应用的打包和部署
一.概述 二.手工打包[不推荐] 打包命令:maven clean package 打包并导出依赖:maven clean package dependency:copy-dependencies 1 ...
- Linux常用的指令(...编辑文件+保存)
mkdir命令用来创建目录 1 mkdir filename touch命令有两个功能:一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来:二是用来创建新的 ...
- HAProxy详解
HAProxy概述与配置 一.HAProxy概述 HAProxy是由 WillyTarreau开发的一款具备高可用性.负载均及基于 TCP和 HTTP的应用代理开源软件,基于HAProxy的负载均衡架 ...
- dom树改变监听
function unwrap(el, target) { if ( !target ) { target = el.parentNode; } while (el.firstChild) { tar ...