Antworten:
Sie benötigen eine Tabellenvariable und es kann so einfach sein.
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);
Über ein Jahr später ... wenn Sie die automatisch generierte ID einer Tabelle benötigen, können Sie dies einfach tun
SELECT @ReportOptionId = SCOPE_IDENTITY()
Ansonsten scheint es, als ob Sie mit der Verwendung einer Tabelle nicht weiterkommen.
Viel später, aber immer noch erwähnenswert, können Sie auch Variablen verwenden, um Werte in der SET-Klausel eines UPDATE oder in den Feldern eines SELECT auszugeben.
DECLARE @val1 int;
DECLARE @val2 int;
UPDATE [dbo].[PortalCounters_TEST]
SET @val1 = NextNum, @val2 = NextNum = NextNum + 1
WHERE [Condition] = 'unique value'
SELECT @val1, @val2
Im obigen Beispiel hat @ val1 den Vorher-Wert und @ val2 den Nachher-Wert, obwohl ich vermute, dass Änderungen von einem Trigger nicht in val2 enthalten sind, sodass Sie in diesem Fall mit der Ausgabetabelle arbeiten müssten. Für alles andere als den einfachsten Fall denke ich, dass die Ausgabetabelle auch in Ihrem Code besser lesbar ist.
Dies ist sehr hilfreich, wenn Sie eine Spalte in eine durch Kommas getrennte Liste umwandeln möchten.
DECLARE @list varchar(max) = '';
DECLARE @comma varchar(2) = '';
SELECT @list = @list + @comma + County, @comma = ', ' FROM County
print @list
SET @val2 = NextNum = NextNum + 1
.