Existe-t-il un moyen "simple" de le faire ou dois-je passer par une variable de table avec la syntaxe "OUTPUT ... INTO"?
DECLARE @someInt int
INSERT INTO MyTable2(AIntColumn)
OUTPUT @SomeInt = Inserted.AIntColumn
VALUES(12)
sql-server
tsql
Benoittr
la source
la source
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);
Plus d'un an plus tard ... si vous avez besoin d'obtenir l'identifiant généré automatiquement d'une table, vous pouvez
Sinon, il semble que vous ne soyez pas obligé d'utiliser une table.
la source
Bien plus tard, mais il convient de mentionner que vous pouvez également utiliser des variables pour afficher des valeurs dans la clause SET d'un UPDATE ou dans les champs d'un SELECT;
Dans l'exemple ci-dessus, @ val1 a la valeur avant et @ val2 a la valeur après bien que je soupçonne que tout changement d'un déclencheur ne serait pas dans val2, vous devrez donc utiliser la table de sortie dans ce cas. Pour tout sauf le cas le plus simple, je pense que la table de sortie sera également plus lisible dans votre code.
Ceci est très utile si vous souhaitez transformer une colonne en une liste séparée par des virgules;
la source
SET @val2 = NextNum = NextNum + 1
.OUTPUT
valeur à une variable dans uneINSERT
clause en utilisant l'INSERT-OUTPUT-VALUES
approche demandée par le demandeur.