在插入SQL TableType的大容量记录时获取SCOPE_IDENTITY值



我有以下表格结构,为了方便起见,我只标记单个列

  • Table_AId, Name, Desc
  • Table_1Id这是标识列Name….)
  • Table_2Id这是标识列Table_A_IdTable_1_Id

表1和表2之间的关系是1...*

现在,我已经为Table_A创建了一个名为TType_Table_A的表类型(它只包含Id作为列,并且从我的C#应用程序中我发送了多条记录)。我已经根据需要实现了这种批量插入功能。

我需要的是,当我将记录从TType_Table_A插入Table_2时,比如说,使用以下语句,我想为插入的每个记录捕获Table_2Id

declare @count int = (select count(*) from @TType_Table_A); --a variable declared for TType_Table_A
if(@count > 0)
  begin
    insert into Table_2(Table_A_Id,Table_1_Id)
    SELECT @SomeValue, @SomeValueAsParameter FROM @TType_Table_A;
  end;

现在假设插入了2条记录,我想为这2条记录中的每一条捕获Id

感谢任何输入/帮助

这就是我所知道的实现方法,但我想减少来自我的应用程序或存储过程中用户光标的DB调用

在表_1中插入记录并返回Id循环。。。。。通过记录并在表2中插入记录并返回Id

在TableType 中插入/选择时,在存储过程中使用光标

我假设这是Sql Server?然后可以使用OUTPUT子句,如下所示:

declare @NewId table (MyNewId INT) 
 insert into Table_2(Table_A_Id,Table_1_Id)
 output INSERTED.MyNewId INTO @TempTable(MyNewID)
 SELECT SomeValue, SomeValueAsParameter FROM @TType_Table_A;
 SELECT * FROM @NewId

相关内容

  • 没有找到相关文章

最新更新