关于sql server批量插入和更新的两种解决方案

转载 2013年12月02日 12:38:35

关于sql server批量插入和更新的两种解决方案

对于sql 来说操作集合类型(一行一行)是比较麻烦的一件事,而一般业务逻辑复杂的系统或项目都会涉及到集合遍历的问题,通常一些人就想到用游标,这里我列出了两种方案,供大家参考

复制代码 代码如下:
.游标方式 1 DECLARE @Data NVARCHAR(max)
SET @Data='1,tanw;2,keenboy'   --Id,Name

DECLARE @dataItem NVARCHAR(100)
DECLARE data_cursor CURSOR FOR (SELECT * FROM split(@Data,';'))
OPEN data_cursor
FETCH NEXT FROM data_cursor INTO @dataItem   
WHILE @@FETCH_STATUS=0
BEGIN
DECLARE @Id INT
DECLARE @Name NVARCHAR(50)

DECLARE dataItem_cursor CURSOR FOR (SELECT * FROM split(@dataItem,','))
OPEN dataItem_cursor   
FETCH NEXT FROM dataItem_cursor INTO @Id
FETCH NEXT FROM dataItem_cursor INTO @Name
CLOSE dataItem_cursor
DEALLOCATE dataItem_cursor

/*
在这里做逻辑处理,插入或更新操作 ...
*/
END

CLOSE data_cursor
DEALLOCATE data_cursor

复制代码 代码如下:
.While方式
DECLARE @Data NVARCHAR(max)
SET @Data='tanw,keenboy'   --Id,Name

DECLARE @Temp TABLE
(
    Id INT IDENTITY(1,1),
    Name  NVARCHAR(50)
)
DECLARE @Id INT
DECLARE @Name NVARCHAR(50)
DECLARE @Results NVARCHAR(MAX) SET @Results=''
INSERT INTO @Temp SELECT (SELECT * FROM split(@Data,';'))

WHILE EXISTS(SELECT * FROM @Temp)
BEGIN
     SELECT TOP 1 @Id=Id,@Name=Name from @Temp
     DELETE FROM @Temp where [id] = @Id
     SET @Results=@Results+@Name+','

     /*

在这里做逻辑处理,插入或更新操作 ...

     */
END
SELECT @Results

如果是简单单表批量插入操作的,上面方法大可不必要

相关文章推荐

在C#中完成海量数据的批量插入和更新

对于海量数据的插入和更新,ADO.NET确实不如JDBC做到好,JDBC有统一的模型来进行批操作.使用起来非常方便: PreparedStatement ps = conn.prepareStatem...
  • axman
  • axman
  • 2008年03月20日 18:45
  • 43273

SQL Server 批量插入数据的两种方法

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

SQL Server 批量插入数据的两种方法

http://blog.csdn.net/tjvictor/article/details/4360030 在SQL Server 中插入一条数据使用Insert语句,但是如果想...

SQL Server 批量插入数据的两种方法

SQL Server 批量插入数据的两种方法 (此文原创自CSDN TJVictor专栏:http://blog.csdn.net/tjvictor/archive/2009/07/18/43600...

SQL Server 和ORACLE 批量插入数据的两种方法

SQL Server 批量插入数据的两种方法  在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致...

SQL Server 批量插入数据的两种方法

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

在SQL Server 2005(2008)中用T-SQL插入中文数据时出现的问号或乱码的解决方案

病症表现为:主要表现为用 T-SQL 语句插入中文数据时数据库显示全是问号“???” 解决办法: 第一种办法:先选中出错的数据库→选中以后右键点击属性会弹出数据库属性 对话框→选中数据库属性对...

SQL Server 2012 高可用性解决方案

  • 2015年04月14日 14:10
  • 3.58MB
  • 下载

SQL SERVER 2012 附加数据AdventureWorks2012失败解决方案

在SQL2012版本之后,关于AdventureWorks数据库都是直接还原,只有2012这版比较鸡肋。本人在附加的时候,真是走了好多弯路。这里就列出解决方案。 首先,你需要有一个AdventureW...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于sql server批量插入和更新的两种解决方案
举报原因:
原因补充:

(最多只允许输入30个字)