0

我處於需要在一個存儲過程中插入多個記錄的情況。如何在循環中爲多個插入存儲過程迭代sql TVP值

我使用「表值參數」,來自c#代碼並將其傳遞給存儲過程。 (這個TVP有一個分析ID列表)

所以,我試圖創建一個循環;插入多個記錄並迭代直到@TVP行的最大行數。

如何獲得在SP中傳遞的TVP(表值參數)的行大小,並在這些TVP行中迭代以逐個獲取其tvp.id,以進行多重插入?

SP是這樣的:

create proc insertTable 
(
    @nID int, 
    @TVP Analises READONLY 
) 
as 
declare @i int 
BEGIN 
    While @i <--max rownumber of @TVP 
    BEGIN 
    --insert into tbl_insertAnalyses 
    --values(@nID,@tvp.analiseID[i]) -- >need to iterate here 
    END 
END 

感謝。

+0

嘗試使用類似:'INSERT tbl_insertAnalyses(COL1,COL2)SELECT COL1,COL2 FROM @TVP'忘記你的循環 –

+0

我忘了循環!謝謝:) @KM。 – linda22

回答

2

Table-Valued Paramater(TVP)是一個表變量。你可以做一個簡單的INSERT...SELECT

CREATE PROCEDURE insertTable 
(
    @nID int, 
    @TVP Analises READONLY 
) 
AS 
SET NOCOUNT ON; 

INSERT INTO tbl_insertAnalyses (ID, AnalysisID) 
    SELECT @nID, t.analiseID 
    FROM @TVP t; 
相關問題