如何在多个插入存储过程的循环中迭代 sql TVP 值
how to iterate sql TVP values in loop for multiple insert stored procedure
我现在需要在一个存储过程中插入多条记录。
我使用 "Table valued parameter",来自 c# 代码并将其传递给存储过程。 (这个 TVP 有一个分析 ID 列表)
所以,我正在尝试创建一个循环;插入多条记录并迭代直到达到@TVP 行的最大行大小。
我如何获得在 SP 中传递的 TVP(Table 值参数)的行大小并在这些 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
谢谢。
一个 Table 值参数 (TVP) 是一个 table 变量。你可以做一个简单的 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;
我现在需要在一个存储过程中插入多条记录。
我使用 "Table valued parameter",来自 c# 代码并将其传递给存储过程。 (这个 TVP 有一个分析 ID 列表)
所以,我正在尝试创建一个循环;插入多条记录并迭代直到达到@TVP 行的最大行大小。
我如何获得在 SP 中传递的 TVP(Table 值参数)的行大小并在这些 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
谢谢。
一个 Table 值参数 (TVP) 是一个 table 变量。你可以做一个简单的 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;