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

2022-11-12 09:44:12
内容摘要
这篇文章主要为大家详细介绍了关于sql server批量插入和更新的两种解决方案,具有一定的参考价值,可以用来参考一下。 对此感兴趣的朋友,看看idc笔记做的技术笔记! 代码如下:
文章正文

这篇文章主要为大家详细介绍了关于sql server批量插入和更新的两种解决方案,具有一定的参考价值,可以用来参考一下。

对此感兴趣的朋友,看看idc笔记做的技术笔记!

代码如下:


.游标方式 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

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

注:关于关于sql server批量插入和更新的两种解决方案的内容就先介绍到这里,更多相关文章的可以留意

代码注释

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!