SQL varijable: Deklariranje, postavljanje i odabir varijable u SQL Serveru
⚡ Pametni sažetak
Varijable SQL Servera su imenovani objekti koji djeluju kao rezervirana mjesta za jednu vrijednost podataka u memoriji. Varijabla se mora deklarirati naredbom DECLARE prije nego što joj se može dodijeliti vrijednost i ponovno upotrijebiti.

Što je varijabla u SQL Serveru?
In MS SQL poslužitelj, varijable su objekti koji djeluju kao rezervirana mjesta za lokaciju u memoriji. Varijabla sadrži jednu podatkovnu vrijednost koju možete pročitati i ponovno koristiti u seriji ili postupku.
Vrste varijabli u SQL-u: lokalne, globalne
MS SQL Server ima dvije vrste varijabli:
- Lokalna varijabla
- Globalna varijabla
Međutim, korisnik može stvoriti samo lokalnu varijablu. Donja slika objašnjava dvije vrste varijabli dostupne u MS SQL Serveru.
Lokalna varijabla
- Korisnik deklarira lokalnu varijablu.
- Prema zadanim postavkama, naziv lokalne varijable počinje s @.
- Svaka lokalna varijabla je ograničena na trenutnu seriju ili proceduru unutar dane sesije.
Globalna varijabla
- Sustav održava globalnu varijablu; korisnik je ne može deklarirati.
- Naziv globalne varijable počinje s @@.
- Pohranjuje informacije vezane uz sesiju.
Kako DEKLARIRATI varijablu u SQL-u
Prije korištenja bilo koje varijable u seriji ili postupku u SQL, morate ga deklarirati. Naredba DECLARE stvara varijablu koja djeluje kao rezervirano mjesto za memorijsku lokaciju. Tek nakon što je deklaracija izvršena, varijabla se može koristiti u sljedećem dijelu serije ili postupka.
TSQL sintaksa:
DECLARE { @LOCAL_VARIABLE[AS] data_type [ = value ] }
Pravila:
- Inicijalizacija je opcionalna prilikom deklariranja.
- Prema zadanim postavkama, DECLARE inicijalizira varijablu na NULL.
- Upotreba ključne riječi 'AS' nije obavezna.
- Za deklariranje više od jedne lokalne varijable, dodajte zarez nakon prve definicije, zatim navedite naziv sljedeće varijable i tip podataka.
Primjeri deklariranja varijable
Upit: s 'AS'
DECLARE @COURSE_ID AS INT;
Upit: Bez 'AS'
DECLARE @COURSE_NAME VARCHAR (10);
Upit: DEKLIRAJ dvije varijable
DECLARE @COURSE_ID AS INT, @COURSE_NAME VARCHAR (10);
Dodjeljivanje vrijednosti SQL varijabli
Vrijednost varijabli možete dodijeliti na sljedeća tri načina:
- Tijekom deklaracije varijable korištenjem ključne riječi DECLARE.
- Korištenje SET-a.
- Korištenjem SELECT-a.
Pogledajmo detaljno sva tri načina.
Tijekom deklaracije varijable pomoću ključne riječi DECLARE
T-SQL sintaksa:
DECLARE { @Local_Variable [AS] Datatype [ = value ] }
Ovdje, nakon tipa podataka, možete koristiti '=' nakon čega slijedi vrijednost koja se dodjeljuje.
upita:
DECLARE @COURSE_ID AS INT = 5 PRINT @COURSE_ID
Pokretanje upita ispisuje vrijednost dodijeljenu tijekom deklaracije, kao što je prikazano dolje.
Korištenje SQL SET varijable
Ponekad je potrebno odvojiti deklaraciju i inicijalizaciju. SET dodjeljuje vrijednost varijabli nakon što je deklarirana. U nastavku su navedeni različiti načini dodjeljivanja vrijednosti pomoću SET-a.
Primjer: Dodjeljivanje vrijednosti varijabli pomoću funkcije SET
Sintaksa:
DECLARE @Local_Variable <Data_Type> SET @Local_Variable = <Value>
upita:
DECLARE @COURSE_ID AS INT SET @COURSE_ID = 5 PRINT @COURSE_ID
Izvršavanje skripte vraća vrijednost dodijeljenu s SET-om, prikazanu dolje.
Primjer: Dodijelite vrijednost više varijabli pomoću naredbe SET
Sintaksa:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable_2 <Data_Type>, SET @Local_Variable_1 = <Value_1> SET @Local_Variable_2 = <Value_2>
Pravilo: Jedna ključna riječ SET može dodijeliti vrijednost samo jednoj varijabli.
upita:
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SET @COURSE_ID = 5 SET @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Dvije PRINT naredbe vraćaju obje dodijeljene vrijednosti, kao što je prikazano dolje.
Primjer: Dodjeljivanje vrijednosti varijabli skalarnim podupitom pomoću SET-a
Sintaksa:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable_2 <Data_Type>,SET @Local_Variable_1 = (SELECT <Column_1> from <Table_Name> where <Condition_1>)
Pravila:
- Upit stavite u zagrade.
- Upit bi trebao biti skalarni upit, što znači da vraća samo jedan redak i jedan stupac. U suprotnom, upit izbacuje grešku.
- Ako upit vrati nula redaka, tada se varijabla postavlja na EMPTY, odnosno NULL.
Pretpostavimo da imamo stol pod nazivom 'Guru99' s dva stupca, kao što je prikazano dolje. Ova tablica se koristi u sljedećim primjerima.
Primjer 1: Kada podupit vrati jedan redak kao rezultat
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 3) PRINT @COURSE_NAME
Budući da podupit vraća jedan odgovarajući redak, varijabla prima tu vrijednost, kao što je prikazano u nastavku.
Primjer 2: Kada podupit vrati nula redaka kao rezultat
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
Budući da podupit ne vraća retke, vrijednost varijable je EMPTY, odnosno NULL, pa se ništa ne ispisuje, kao što je prikazano u nastavku.
Korištenje SQL SELECT varijable
Baš kao i kod SET-a, možete koristiti i SELECT za dodjeljivanje vrijednosti varijablama nakon što ih deklarirate pomoću DECLARE-a. U nastavku su navedeni različiti načini dodjeljivanja vrijednosti pomoću SELECT-a.
Primjer: Dodjeljivanje vrijednosti varijabli pomoću naredbe SELECT
Sintaksa:
DECLARE @LOCAL_VARIABLE <Data_Type> SELECT @LOCAL_VARIABLE = <Value>
upita:
DECLARE @COURSE_ID INT SELECT @COURSE_ID = 5 PRINT @COURSE_ID
Naredba SELECT ispisuje vrijednost, kao što je prikazano dolje.
Primjer: Dodjeljivanje vrijednosti više varijabli pomoću SELECT-a
Sintaksa:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Value_1>, @Local_Variable _2 = <Value_2>
Pravilo: Za razliku od SET-a, SELECT može dodijeliti vrijednost više varijabli odvojenih zarezima.
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SELECT @COURSE_ID = 5, @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Obje varijable su dodijeljene u jednom SELECT-u, kao što je prikazano dolje.
Primjer: Dodjeljivanje vrijednosti varijabli s podupitorom pomoću SELECT-a
Sintaksa:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = (SELECT <Column_1> from <Table_name> where <Condition_1>)
Pravila:
- Upit stavite u zagrade.
- Upit bi trebao biti skalarni upit koji vraća jedan redak i jedan stupac. U suprotnom, upit izbacuje grešku.
- Ako upit vrati nula redaka, tada je varijabla PRAZNA, odnosno NULL.
Preispitajte naše 'GuruStol od 99'.
Primjer 1: Kada podupit vrati jedan redak kao rezultat
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 1) PRINT @COURSE_NAME
Podupit vraća jedan redak, pa varijabla sadrži tu vrijednost, kao što je prikazano u nastavku.
Primjer 2: Kada podupit vrati nula redaka kao rezultat
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
Bez odgovarajućeg retka, varijabla ostaje PRAZNA, odnosno NULL, kao što je prikazano dolje.
Primjer 3: Dodjeljivanje vrijednosti varijabli regularnom SELECT naredbom
Sintaksa:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Column_1> from <Table_name> where <Condition_1>
Pravila:
- Za razliku od SET-a, ako upit vraća više redaka, tada se vrijednost varijable postavlja na vrijednost posljednjeg retka.
- Ako upit vrati nula redaka, tada se varijabla postavlja na EMPTY, odnosno NULL.
Upit 1: Upit vraća jedan redak
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 3 PRINT @COURSE_NAME
Jedan odgovarajući redak postavlja vrijednost varijable, kao što je prikazano dolje.
Upit 2: Upit vraća više redaka
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 PRINT @COURSE_NAME
Kada se nekoliko redaka podudara, varijabla zadržava vrijednost iz posljednjeg retka, kao što je prikazano dolje.
Upit 3: Upit vraća nula redaka
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 5 PRINT @COURSE_NAME
Kada se nijedan red ne podudara, varijabla je PRAZNA, odnosno NULL, kao što je prikazano dolje.
Ostali primjeri SQL varijabli
Deklarirana varijabla može se koristiti i unutar upita, na primjer u WHERE klauzuli za filtriranje redaka.
upita:
DECLARE @COURSE_ID Int = 1 SELECT * from Guru99 where Tutorial_id = @COURSE_ID
Varijabla filtrira upit i vraća odgovarajući redak, kao što je prikazano u nastavku.
Zanimljive činjenice o varijablama SQL Servera!
- Lokalna varijabla može se prikazati pomoću naredbe PRINT kao i naredbe SELECT.
- Tip podataka tablice ne dopušta korištenje 'AS' tijekom deklaracije.
- SET je u skladu s ANSI standardima, dok SELECT nije.
- Također je dopušteno stvaranje lokalne varijable pod nazivom @. Na primjer, može se deklarirati kao:
'DECLARE @@ as VARCHAR (10)'















