Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL:dynamiczne nazwy zmiennych

Cóż, to nie jest ładne, ale możesz to zrobić:

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

Powinno to być na tyle nieprzyjemne, że możesz pomyśleć o alternatywach. Och, oto dobry. Zdefiniuj zmienną tabeli i po prostu dodaj wiersze dla każdej wartości:

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

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

Jeśli chcesz uzyskać zmienną, możesz:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Funkcja TRANSLATE w SQL SERVER

  2. Pobieranie drugiej wartości z uporządkowanej listy

  3. Nieoczekiwane dane wyjściowe bazy danych podczas korzystania z INNER JOIN

  4. Wprowadzenie do zabezpieczeń na poziomie wiersza w SQL Server

  5. Jak poprawić wydajność niedeterministycznej funkcji kolumny w klauzuli WHERE lub złączenia?