Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment utiliser la clause OUTPUT d'une instruction INSERT pour obtenir la valeur d'identité ?

Vous pouvez soit faire en sorte que l'ID nouvellement inséré soit envoyé à la console SSMS comme ceci :

INSERT INTO MyTable(Name, Address, PhoneNo)
OUTPUT INSERTED.ID
VALUES ('Yatrix', '1234 Address Stuff', '1112223333')

Vous pouvez également l'utiliser par ex. C #, lorsque vous devez récupérer l'ID de votre application appelante - exécutez simplement la requête SQL avec .ExecuteScalar() (au lieu de .ExecuteNonQuery() ) pour lire l'ID résultant retour.

Ou si vous avez besoin de capturer le ID nouvellement inséré dans T-SQL (par exemple pour un traitement ultérieur ultérieur), vous devez créer une variable de table :

DECLARE @OutputTbl TABLE (ID INT)

INSERT INTO MyTable(Name, Address, PhoneNo)
OUTPUT INSERTED.ID INTO @OutputTbl(ID)
VALUES ('Yatrix', '1234 Address Stuff', '1112223333')

De cette façon, vous pouvez mettre plusieurs valeurs dans @OutputTbl et effectuer un traitement supplémentaire sur ceux-ci. Vous pouvez également utiliser une table temporaire "normale" (#temp ) ou même une "vraie" table persistante comme "cible de sortie" ici.