sql >> Databasteknik >  >> RDS >> Sqlserver

SQL:Dynamiska variabelnamn

Tja, det är inte vackert, men du kan göra:

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

Detta borde vara tillräckligt obehagligt för att du skulle kunna tänka dig alternativ. Åh, här är en bra. Definiera en tabellvariabel och lägg bara till rader för varje värde:

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 vill få en variabel kan du göra:

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


  1. sbt nedladdningsartefakt från lösenordsskyddat arkiv - oracle jdbc-drivrutin som hanterat beroende

  2. Oracle-databas:Hur läser man en BLOB?

  3. Hur tar jag hänsyn till saknade xPaths och håller mina data enhetliga när jag skrapar en webbplats med DOMXPath-frågemetoden?

  4. Fångbart fatalt fel:Objekt av klassen stdClass kunde inte konverteras till sträng i..när försökte infogas i databasen