Есть ли какой-нибудь «простой» способ сделать это или мне нужно передать табличную переменную с синтаксисом «OUTPUT ... INTO»?
DECLARE @someInt int
INSERT INTO MyTable2(AIntColumn)
OUTPUT @SomeInt = Inserted.AIntColumn
VALUES(12)
sql-server
tsql
Benoittr
источник
источник
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);
Более года спустя ... если вам нужно получить автоматически сгенерированный идентификатор таблицы, вы можете просто
В противном случае кажется, что вы застряли в использовании таблицы.
источник
Позже, но все же стоит упомянуть, что вы также можете использовать переменные для вывода значений в предложении SET UPDATE или в полях SELECT;
В приведенном выше примере @ val1 имеет значение до, а @ val2 имеет значение после, хотя я подозреваю, что никаких изменений из триггера не будет в val2, поэтому в этом случае вам придется использовать выходную таблицу. В любом случае, кроме простейшего, я думаю, что и в вашем коде таблица вывода будет более читаемой.
Это очень полезно, если вы хотите превратить столбец в список, разделенный запятыми;
источник
SET @val2 = NextNum = NextNum + 1
.OUTPUT
значение переменной вINSERT
предложении, используяINSERT-OUTPUT-VALUES
подход, который просил спрашивающий.