sql >> Database teknologi >  >> RDS >> Sqlserver

SQL:Dynamiske variabelnavne

Nå, det er ikke kønt, men du kan gøre:

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

Dette burde være tilstrækkeligt ubehageligt til, at du måske tænker på alternativer. Åh, her er en god en. Definer en tabelvariabel og tilføj blot rækker for hver værdi:

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

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

Når du vil have en variabel, kan du gøre:

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


  1. Hvilke DBMS'er tillader en rækkefølge af en attribut, som ikke er til stede i select-klausulen?

  2. Timeout for OracleDataAdapter.Fill()

  3. Samme underforespørgsel brugt flere gange i en enkelt forespørgsel

  4. Retur i pg-løfte