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

Posted 涛声依旧1988

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql server中批量插入与更新两种解决方案分享(存储过程)相关的知识,希望对你有一定的参考价值。

转自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 @[email protected][email protected]+‘,‘

    www.jb51.net

    /*

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

    */

    END

    SELECT @Results

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

以上是关于sql server中批量插入与更新两种解决方案分享(存储过程)的主要内容,如果未能解决你的问题,请参考以下文章

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

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

使用 Petapoco 批量插入/更新

工作高峰时段的 Sql Server 批量插入

从 MS Access 批量导入并插入 Sql Server [关闭]

如何在 SQL Server 2005 中插入值数组?