Existe alguma maneira "simples" de fazer isso ou eu preciso passar por uma variável de tabela com a sintaxe "OUTPUT ... INTO"?
DECLARE @someInt int
INSERT INTO MyTable2(AIntColumn)
OUTPUT @SomeInt = Inserted.AIntColumn
VALUES(12)
sql-server
tsql
Benoittr
fonte
fonte
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);
Mais de um ano depois ... se o que você precisa é obter o ID gerado automaticamente de uma tabela, basta
Caso contrário, parece que você está preso ao usar uma tabela.
fonte
Muito mais tarde, mas ainda vale a pena mencionar, você também pode usar variáveis para gerar valores na cláusula SET de um UPDATE ou nos campos de um SELECT;
No exemplo acima, @ val1 tem o valor antes e @ val2 tem o valor depois, embora eu suspeite que alguma alteração de um gatilho não esteja no val2, portanto, você teria que ir com a tabela de saída nesse caso. Para qualquer coisa, menos o caso mais simples, acho que a tabela de saída também será mais legível no seu código.
Um lugar em que isso é muito útil é se você deseja transformar uma coluna em uma lista separada por vírgula;
fonte
SET @val2 = NextNum = NextNum + 1
.