不使用循环/游标的sql多重保存

shstlldc  于 2021-07-27  发布在  Java
关注(0)|答案(1)|浏览(302)

我有一个要求,从int[]字符串中,我需要将这个数组的所有值插入db。我试过这个方法,效果很好。
为了实现这一点,我将int[]转换为c#中的xml,并在sp中使用这个xml变量来填充一个表变量,然后在这个表变量上循环执行插入操作。
有没有办法避免while循环并在表中插入多个逗号分隔的字符串?
代码如下:

DECLARE @CatTable TABLE(RowID int not null primary key identity(1,1), ID int)

    DECLARE @RowsToProcess  int
    DECLARE @CurrentRow     int

 INSERT INTO @Table
    SELECT tbl.colname.value('text()[1]','int') AS Id
    FROM @IdsList.nodes('/List/CIds') tbl(colname);

    SET @RowsToProcess=@@ROWCOUNT

SET @CurrentRow=0

WHILE @CurrentRow<@RowsToProcess    ---**How to avoid this loop and do the insert ?**
BEGIN
    SET @CurrentRow=@CurrentRow+1

    INSERT INTO tblRealtable (id, anotherId)
    SELECT ID ,@AnotherID  FROM @Table
        WHERE RowID=@CurrentRow

END
enD
END
jhiyze9q

jhiyze9q1#

你不是刚看完这个吗?

INSERT INTO dbo.tblRealtable (id, anotherId)
SELECT tbl.colname.value('text()[1]','int') AS Id
       @AnotherID
FROM @IdsList.nodes('/List/CIds') tbl(colname);

相关问题