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