【问题标题】:how to iterate sql TVP values in loop for multiple insert stored procedure如何在循环中为多个插入存储过程迭代sql TVP值
【发布时间】:2015-05-21 13:48:11
【问题描述】:

我需要在一个存储过程中插入多条记录。

我使用“表值参数”,来自 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

谢谢。

【问题讨论】:

  • 尝试使用类似:INSERT tbl_insertAnalyses (col1, col2) SELECT col1, col2 FROM @TVP 并忘记你的循环
  • 我忘记了循环!谢谢:) @KM。

标签: sql-server stored-procedures iteration table-valued-parameters


【解决方案1】:

表值参数 (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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多