Cela semble être une demande étrange - aurez-vous toujours un ensemble fixe de variables? Que se passe-t-il si le nombre passe de 20 à 21, et ainsi de suite, allez-vous constamment déclarer de nouvelles variables?
Est-il possible, au lieu de récupérer les valeurs dans des variables séparées, de les renvoyer chacune comme des lignes individuelles et de simplement les parcourir dans un curseur?
Sinon, et vous devez utiliser les variables individuelles comme cela est expliqué, voici une solution:
declare @V1 nvarchar(100)
set @V1 = 'hi'
declare @V2 nvarchar(100)
set @V2 = 'bye'
declare @V3 nvarchar(100)
set @V3 = 'test3'
declare @V4 nvarchar(100)
set @V4 = 'test4'
declare @V5 nvarchar(100)
set @V5 = 'end'
declare aCursor cursor for
select @V1
union select @V2 union select @V3
union select @V4 union select @V5
open aCursor
declare @V nvarchar(100)
fetch next from aCursor into @V
while @@FETCH_STATUS = 0
begin
exec TestParam @V
fetch next from aCursor into @V
end
close aCursor
deallocate aCursor
Je ne aime pas vraiment cette solution, il semble en désordre et infranchissable. En outre, en note - la façon dont vous avez formulé votre question semble demander s'il y a des tableaux dans T-SQL. Par défaut, il n'y en a pas, bien qu'une recherche rapide sur google puisse vous indiquer des solutions de contournement si vous en avez absolument besoin.
Un peu de contexte serait bon. Pourquoi essayez-vous de faire cela? – Tomalak