SQL varijable: deklaracija, postavljanje i odabir varijable SQL Servera
ล to je varijabla u SQL Serveru?
U MS SQL-u, varijable su objekti koji djeluju kao rezervirano mjesto za memorijsku lokaciju. Varijabla drลพi jednu vrijednost podataka.
Vrste varijabli u SQL-u: lokalne, globalne
MS SQL ima dvije vrste varijabli:
- Lokalna varijabla
- Globalna varijabla.
Meฤutim, korisnik moลพe stvoriti samo lokalnu varijablu.
Donja slika objaลกnjava dvije vrste dostupnih varijabli MS SQL posluลพitelj.

Lokalna varijabla
- Korisnik deklarira lokalnu varijablu.
- Prema zadanim postavkama, lokalna varijabla poฤinje s @.
- Svaki opseg lokalne varijable ima ograniฤenje na trenutna serija ili postupak unutar bilo koje sesije.
Globalna varijabla
- Sustav odrลพava globalnu varijablu. Korisnik ih ne moลพe prijaviti.
- Globalna varijabla poฤinje s @@
- Pohranjuje informacije vezane uz sesiju.
Kako DEKLARIRATI varijablu u SQL-u
- Prije koriลกtenja bilo koje varijable u seriji ili postupku, trebate deklarirati varijablu.
- Naredba DECLARE koristi se za DEKLIRANJE varijable koja sluลพi kao rezervirano mjesto za memorijsku lokaciju.
- Tek nakon ลกto je deklaracija napravljena, varijabla se moลพe koristiti u sljedeฤem dijelu serije ili postupka.
TSQL sintaksa:
DECLARE { @LOCAL_VARIABLE[AS] data_type [ = value ] }
Pravila:
- Inicijalizacija je neobavezna stvar prilikom deklariranja.
- Prema zadanim postavkama, DECLARE inicijalizira varijablu na NULL.
- Upotreba kljuฤne rijeฤi 'AS' nije obavezna.
- Da biste deklarirali viลกe od jedne lokalne varijable, upotrijebite zarez nakon definicije prve lokalne varijable, a zatim definirajte naziv sljedeฤe lokalne 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
Moลพete dodijeliti vrijednost varijabli na sljedeฤi naฤin tri naฤina:
- Tijekom deklaracije varijable pomoฤu kljuฤne rijeฤi DECLARE.
- Koriลกtenje SET
- Koriลกtenje SELECT
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ลพemo koristiti '=' nakon kojeg slijedi vrijednost koju treba dodijeliti
upita:
DECLARE @COURSE_ID AS INT = 5 PRINT @COURSE_ID
Koriลกtenje SQL SET VARIABLE
Ponekad ลพelimo drลพati deklaraciju i inicijalizaciju odvojene. SET se moลพe koristiti za dodjeljivanje vrijednosti varijabli nakon deklariranja varijable. U nastavku su razliฤiti naฤini dodjele vrijednosti pomoฤu SET-a:
Primjer: Dodjeljivanje vrijednosti varijabli pomoฤu SET
Sintaksa:
DECLARE @Local_Variable <Data_Type> SET @Local_Variable = <Value>
upita:
DECLARE @COURSE_ID AS INT SET @COURSE_ID = 5 PRINT @COURSE_ID
Primjer: Dodijelite vrijednost viลกe varijabli koristeฤi 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 SET kljuฤna rijeฤ moลพe se koristiti samo za dodjelu vrijednosti jedna varijabla.
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
Primjer: Dodjeljivanje vrijednosti varijabli s a Skalarni podupit koristeฤi SET
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:
- Stavite upit u zagradu.
- Upit bi trebao biti skalarni upit. Skalarni upit je upit s rezultatima u obliku samo jednog retka i jednog stupca. U suprotnom, upit ฤe izbaciti pogreลกku.
- Ako upit vrati nula redaka, tada je varijabla postavljena na EMPTY, tj. NULL.
Pretpostavka: Pretpostavimo da imamo tablicu kao 'Guru99' s dva stupca kao ลกto je prikazano u nastavku:
U daljnjim uputama koristit ฤemo tablicu 'Guru99'
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
Primjer 2: Kada podupit kao rezultat vrati nulti redak
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
U ovom konkretnom sluฤaju vrijednost varijable je PRAZNA, tj. NULL.
Koriลกtenje SQL SELECT VARIABLE
Baลก kao i SET, takoฤer moลพemo koristiti SELECT za dodjeljivanje vrijednosti varijablama, nakon deklariranja varijable pomoฤu DECLARE. U nastavku su razliฤiti naฤini za dodjeljivanje vrijednosti pomoฤu SELECT:
Primjer: Dodjeljivanje vrijednosti varijabli pomoฤu SELECT
Sintaksa:
DECLARE @LOCAL_VARIABLE <Data_Type> SELECT @LOCAL_VARIABLE = <Value>
upita:
DECLARE @COURSE_ID INT SELECT @COURSE_ID = 5 PRINT @COURSE_ID
Primjer: Dodjeljivanje vrijednosti viลกestrukoj varijabli pomoฤu SELECT
Sintaksa:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Value_1>, @Local_Variable _2 = <Value_2>
Pravila: Za razliku od SET, SELECT se moลพe koristiti za dodjeljivanje vrijednosti na viลกe varijabli odvojen od zarez.
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SELECT @COURSE_ID = 5, @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Primjer: Dodjeljivanje vrijednosti varijabli s podupitom pomoฤu SELECT
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:
- Stavite upit u zagradu.
- Upit bi trebao biti skalarni upit. Skalarni upit je upit s rezultatom kao jednim redom i jednim stupcem. U suprotnom, upit ฤe izbaciti pogreลกku.
- Ako upit vrati nula redaka, tada je varijabla PRAZNA, tj. NULL.
- Ponovno razmotrite naลกu tablicu 'Guru99'
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
Primjer 2: Kada podupit kao rezultat vrati nulti redak
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
U ovom konkretnom sluฤaju, varijabla je EMPTY, tj. NULL.
Primjer 3: Dodijelite vrijednost varijabli uobiฤajenom naredbom SELECT.
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 rezultira s viลกe redaka, tada se vrijednost varijable postavlja na vrijednost posljednjeg retka.
- Ako upit vrati nula redaka, tada je varijabla postavljena na EMPTY, tj. NULL.
Upit 1: Upit vraฤa jedan red.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 3 PRINT @COURSE_NAME
Upit 2: Upit vraฤa viลกe redaka.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 PRINT @COURSE_NAME
U ovom posebnom sluฤaju, vrijednost varijable je postaviti na vrijednost posljednjeg reda.
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
U ovom konkretnom sluฤaju varijabla je PRAZNA, tj. NULL.
Ostali primjeri SQL varijabli
Koriลกtenje varijable u upitu
upita:
DECLARE @COURSE_ID Int = 1 SELECT * from Guru99 where Tutorial_id = @COURSE_ID
Zanimljive ฤinjenice o varijablama SQL Servera!
- Lokalna varijabla moลพe se prikazati koriลกtenjem PRINT kao i SELECT COMMAND
- Vrsta podataka tablice ne dopuลกta koriลกtenje 'AS' tijekom deklaracije.
- SET je u skladu s ANSI standardima, dok SELECT nije.
- Stvaranje lokalne varijable s imenom kao @ takoฤer je dopuลกteno. Moลพemo to deklarirati kao, na primjer:
'DECLARE @@ as VARCHAR (10)'
Rezime
- Varijable su objekti koji djeluju kao rezervirano mjesto.
- Postoje dvije vrste varijabli: lokalne i globalne
- Varijablu moลพemo dodijeliti na sljedeฤa tri naฤina: koristeฤi 1) DECLARE 2) koristeฤi SET 3) koristeฤi SELECT














