关于sql server批量插入和更新的两种解决方案
2022-11-12 09:44:12
内容摘要
这篇文章主要为大家详细介绍了关于sql server批量插入和更新的两种解决方案,具有一定的参考价值,可以用来参考一下。
对此感兴趣的朋友,看看idc笔记做的技术笔记!
代码如下:
文章正文
这篇文章主要为大家详细介绍了关于sql server批量插入和更新的两种解决方案,具有一定的参考价值,可以用来参考一下。
对此感兴趣的朋友,看看idc笔记做的技术笔记!
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <code>.游标方式 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 </code> |
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <code>.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 </code> |
如果是简单单表批量插入操作的,上面方法大可不必要
注:关于关于sql server批量插入和更新的两种解决方案的内容就先介绍到这里,更多相关文章的可以留意
代码注释