Réponses:
Vous avez besoin d'une variable de table et cela peut être aussi simple que cela.
declare @ID table (ID int)
insert into MyTable2(ID)
output inserted.ID into @ID
values (1)
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
SELECT @ReportOptionId = SCOPE_IDENTITY()
Sinon, il semble que vous ne soyez pas obligé d'utiliser une table.
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;
DECLARE @val1 int;
DECLARE @val2 int;
UPDATE [dbo].[PortalCounters_TEST]
SET @val1 = NextNum, @val2 = NextNum = NextNum + 1
WHERE [Condition] = 'unique value'
SELECT @val1, @val2
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;
DECLARE @list varchar(max) = '';
DECLARE @comma varchar(2) = '';
SELECT @list = @list + @comma + County, @comma = ', ' FROM County
print @list
SET @val2 = NextNum = NextNum + 1
.
OUTPUT
valeur à une variable dans une INSERT
clause en utilisant l' INSERT-OUTPUT-VALUES
approche demandée par le demandeur.