I have a requirement where from a string of int[] I need to insert all the values of this array into DB. I have tried this solution and it works fine.
To achieve this I have converted the int[] to XML in C#, and in SP used this XML variable to fill a table variable and looped over this table variable to do the insert.
Is there any way to avoid the while loop and insert multiple values comma separated string into the table ?
Below is the code :
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
Aren't you just after this?
INSERT INTO dbo.tblRealtable (id, anotherId)
SELECT tbl.colname.value('text()[1]','int') AS Id
@AnotherID
FROM @IdsList.nodes('/List/CIds') tbl(colname);