Answers:
您需要一个表变量,它可以很简单。
declare @ID table (ID int)
insert into MyTable2(ID)
output inserted.ID into @ID
values (1)
output
?
DECLARE @InsertedIDResults TABLE (ID int); INSERT INTO MyTable (Name, Age) OUTPUT INSERTED.ID INTO @InsertedIDResults VALUES('My Name', 30); DECLARE @InsertedID int = (SELECT TOP 1 ID FROM @InsertedIDResults);
一年多以后...如果您需要获取表的自动生成的ID,则只需
SELECT @ReportOptionId = SCOPE_IDENTITY()
否则,您似乎无法使用表格。
后来,但仍然值得一提的是,您还可以使用变量在UPDATE的SET子句或SELECT的字段中输出值。
DECLARE @val1 int;
DECLARE @val2 int;
UPDATE [dbo].[PortalCounters_TEST]
SET @val1 = NextNum, @val2 = NextNum = NextNum + 1
WHERE [Condition] = 'unique value'
SELECT @val1, @val2
在上面的示例中,虽然我怀疑来自触发器的任何更改都不会在val2中进行,但@ val1具有before值,而@ val2具有after值,因此在这种情况下,您必须使用输出表。除了最简单的情况外,我认为输出表也将在您的代码中更具可读性。
一个非常有用的地方是,如果您想将一列变成逗号分隔的列表;
DECLARE @list varchar(max) = '';
DECLARE @comma varchar(2) = '';
SELECT @list = @list + @comma + County, @comma = ', ' FROM County
print @list
SET @val2 = NextNum = NextNum + 1
。