Gibt es eine "einfache" Möglichkeit, dies zu tun, oder muss ich eine Tabellenvariable mit der Syntax "OUTPUT ... INTO" übergeben?
DECLARE @someInt int
INSERT INTO MyTable2(AIntColumn)
OUTPUT @SomeInt = Inserted.AIntColumn
VALUES(12)
sql-server
tsql
Benoittr
quelle
quelle
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
Ansonsten scheint es, als ob Sie mit der Verwendung einer Tabelle nicht weiterkommen.
quelle
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.
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.
quelle
SET @val2 = NextNum = NextNum + 1
.