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

SQL multi save without using loop/ cursor

我有一个要求,我需要从一个 int[] 字符串中将这个数组的所有值插入到数据库中。 我试过这个解决方案,效果很好。

为了实现这一点,我在 C# 中将 int[] 转换为 XML,在 SP 中使用此 XML 变量填充 table 变量并循环此 table 变量做插入。

有没有办法避免 while 循环并将多个值 逗号分隔的字符串插入 table?

下面是代码:

  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

你不就是在追这个吗?

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