我有以下表结构,为方便起见,我只标记单个列
Table_A
(Id, Name, Desc
)Table_1
(Id
这是标识列,Name
....)Table_2
(Id
这是标识列,Table_A_Id
,Table_1_Id
) Table_1与Table_2之间的关系为1...*
现在我为Table_A
创建了一个名为TType_Table_A
的表格类型(仅包含Id
作为列,并且从我的C#应用程序中发送了多个记录)。我已根据需要实现了这种批量插入功能。
当我将Table_2
的记录从TType_Table_A
插入以下语句时,我需要的是,我想为每个插入的记录捕获Id
Table_2
/ p>
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
。
赞赏任何输入/帮助
我知道这是如何实现的,但我希望减少存储过程中应用程序或用户光标的数据库调用
在Table_1中插入记录并返回Id循环.....通过记录并在表2中插入记录并返回Id
OR
从TableType
插入/选择时,在存储过程中使用游标答案 0 :(得分:8)
我认为这是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