各位用户为了找寻关于sql server中批量插入与更新两种解决方案分享(存储过程)的资料费劲了很多周折。这里教程网为您整理了关于sql server中批量插入与更新两种解决方案分享(存储过程)的相关资料,仅供查阅,以下为您介绍关于sql server中批量插入与更新两种解决方案分享(存储过程)的详细内容

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  /*  在这里做逻辑处理,插入或更新操作 ...  www.zzvips.com  */  END  CLOSE data_cursor  DEALLOCATE data_cursor 

2.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+','  www.zzvips.com  /*  在这里做逻辑处理,插入或更新操作 ...  */  END  SELECT @Results 

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