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

SQL :noms de variables dynamiques

Eh bien, ce n'est pas joli, mais vous pouvez faire :

if @loopcntr = 1
    set var01 = 'somevalue'
else if @loopcntr = 2
    set var02 = 'whatever'
else if . . .

Cela devrait être suffisamment désagréable pour que vous pensiez à des alternatives. Oh, en voici une bonne. Définissez une variable de tableau et ajoutez simplement des lignes pour chaque valeur :

declare @vars table (
    id int identity(1, 1),
    loopcntr int,
    value varchar(255)
);

. . .
-- inside the loop
    insert into @vars(loopcntr, value)
        select @loopcntr, 'whatever';

Lorsque vous souhaitez obtenir une variable, vous pouvez faire :

declare @var varchar(255);
select @var = value from @vars where loopcntr = <the one I want>;