使用填充的表类型作为 TSQL-Merge 的源。我想在合并后执行一个 select 语句,检索表类型的所有列/行,但我想要新插入的 id 而不是“-1”值。我不确定我能否以完全基于集合的方式做到这一点,可以吗?
这适用于将一堆插入发送到数据库中的 UI,并且需要返回相同的对象,但填充了它们的每个 ID 列值。SQL JOIN 操作没有“公共列”。
CREATE TYPE instype AS TABLE(
instypeid [smallint] NOT NULL,
instext [varchar](64) NOT NULL
)
Go
create table #desttable ( instypeid smallint identity(1,1) primary key , instext varchar(64) )
Go
declare @newids table ( idvalue smallint )
declare @thing1 instype
insert into @thing1 values ( -1 , 'zero' )
insert into @thing1 values ( -1 , 'one' )
Merge #desttable desttbl
Using @thing1 srctbl
On desttbl.instypeid = srctbl.instypeid
When Not Matched Then
Insert ( instext )
Values ( instext )
Output inserted.instypeid Into @newids
;
/*
Wanted shape of the result set
instypeid instext
0 zero
1 one
*/
谢谢。