首页 > 数据库技术 > 详细

sql server中批量插入与更新两种解决方案分享(存储过程)

时间:2016-09-12 15:39:31      阅读:201      评论:0      收藏:0      [点我收藏+]

转自http://www.shangxueba.com/jingyan/1940447.html

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.jb51.net

    */

    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.jb51.net

    /*

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

    */

    END

    SELECT @Results

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

sql server中批量插入与更新两种解决方案分享(存储过程)

原文:http://www.cnblogs.com/taoshengyujiu/p/5864903.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!