SQL változók: SQL Server változó deklarálása, beállítása és kiválasztása
⚡ Okos összefoglaló
Az SQL Server változók névvel ellátott objektumok, amelyek egyetlen adatérték helyőrzőiként működnek a memóriában. Egy változót a DECLARE utasítással kell deklarálni, mielőtt értéket rendelhetnénk hozzá és újra felhasználhatnánk.

Mi az a változó az SQL Serverben?
In MS SQL ServerA változók olyan objektumok, amelyek helyőrzőkként szolgálnak egy memóriahely számára. Egy változó egyetlen adatértéket tartalmaz, amelyet beolvashat és újra felhasználhat egy kötegben vagy eljárásban.
Változótípusok SQL-ben: lokális, globális
Az MS SQL Server kétféle változóval rendelkezik:
- Helyi változó
- Globális változó
A felhasználó azonban csak lokális változót hozhat létre. Az alábbi ábra a MS SQL Serverben elérhető kétféle változót ismerteti.
Helyi változó
- A felhasználó deklarálja a helyi változót.
- Alapértelmezés szerint a lokális változó neve @ jellel kezdődik.
- Minden helyi változó hatóköre az adott munkameneten belüli aktuális kötegre vagy eljárásra vonatkozik.
Globális változó
- A rendszer karbantartja a globális változót; a felhasználó nem deklarálhat ilyet.
- A globális változó neve @@ karakterrel kezdődik.
- Munkamenettel kapcsolatos információkat tárol.
Hogyan DECLARE egy változót SQL-ben
Mielőtt bármilyen változót használnánk egy kötegben vagy eljárásban SQL, deklarálnia kell. A DECLARE parancs létrehoz egy változót, amely helyőrzőként szolgál egy memóriahely számára. Csak a deklaráció után használható a változó a köteg vagy eljárás következő részében.
TSQL szintaxis:
DECLARE { @LOCAL_VARIABLE[AS] data_type [ = value ] }
Szabályok:
- Az inicializálás opcionális a deklarálás során.
- Alapértelmezés szerint a DECLARE a változót NULL értékre inicializálja.
- Az „AS” kulcsszó használata nem kötelező.
- Több lokális változó deklarálásához vesszőt kell tenni az első definíció után, majd meg kell adni a következő változó nevét. adattípus.
Példák egy változó deklarálására
Lekérdezés: "AS"-vel
DECLARE @COURSE_ID AS INT;
Lekérdezés: "AS" nélkül
DECLARE @COURSE_NAME VARCHAR (10);
Lekérdezés: DECLARE két változót
DECLARE @COURSE_ID AS INT, @COURSE_NAME VARCHAR (10);
Érték hozzárendelése az SQL-változóhoz
A következő három módon rendelhetsz értéket egy változóhoz:
- Változó deklarálása során a DECLARE kulcsszó használatával.
- SET használata.
- A SELECT használata.
Nézzük meg mindhárom módot részletesen.
Változó deklaráció során a DECLARE kulcsszó használatával
T-SQL szintaxis:
DECLARE { @Local_Variable [AS] Datatype [ = value ] }
Itt az adattípus után használhatjuk az '=' jelet, majd a hozzárendelni kívánt értéket.
Keresés:
DECLARE @COURSE_ID AS INT = 5 PRINT @COURSE_ID
A lekérdezés futtatása kinyomtatja a deklaráció során hozzárendelt értéket, az alábbiak szerint.
SQL SET változó használata
Néha érdemes a deklarációt és az inicializálást különválasztani. A SET parancs értéket rendel a változóhoz a deklaráció után. Az alábbiakban a SET használatával történő értékadás különböző módjait láthatjuk.
Példa: Érték hozzárendelése egy változóhoz SET használatával
Syntax:
DECLARE @Local_Variable <Data_Type> SET @Local_Variable = <Value>
Keresés:
DECLARE @COURSE_ID AS INT SET @COURSE_ID = 5 PRINT @COURSE_ID
A szkript végrehajtása a SET paraméterrel hozzárendelt értéket adja vissza, az alábbiak szerint.
Példa: Érték hozzárendelése több változóhoz SET használatával
Syntax:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable_2 <Data_Type>, SET @Local_Variable_1 = <Value_1> SET @Local_Variable_2 = <Value_2>
Szabály: Egy SET kulcsszó csak egy változóhoz rendelhet értéket.
Keresés:
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SET @COURSE_ID = 5 SET @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
A két PRINT utasítás mindkét hozzárendelt értéket visszaadja, ahogy az alább látható.
Példa: Érték hozzárendelése egy változóhoz skaláris allekérdezéssel SET használatával
Syntax:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable_2 <Data_Type>,SET @Local_Variable_1 = (SELECT <Column_1> from <Table_Name> where <Condition_1>)
Szabályok:
- A lekérdezést zárójelbe kell tenni.
- A lekérdezésnek skaláris lekérdezésnek kell lennie, ami azt jelenti, hogy csak egy sort és egy oszlopot ad vissza. Ellenkező esetben a lekérdezés hibát dob.
- Ha a lekérdezés nulla sort ad vissza, akkor a változó EMPTY, azaz NULL értékre van állítva.
Tegyük fel, hogy megvan nekünk a táblázat nevezett 'Guru99' két oszloppal, ahogy az alább látható. Ezt a táblázatot használjuk a következő példákban.
1. példa: Amikor az alkérés egy sort ad vissza eredményeként
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 3) PRINT @COURSE_NAME
Mivel az alkérés egy egyező sort ad vissza, a változó ezt az értéket kapja, az alábbiak szerint.
2. példa: Amikor az alkérés eredményeként nulla sort ad vissza
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
Mivel az alkérdés nem ad vissza sorokat, a változó értéke EMPTY, azaz NULL, így semmi sem kerül kiírásra, ahogy az alább látható.
SQL SELECT változó használata
A SET-hez hasonlóan a SELECT függvénnyel is értékeket rendelhetsz a változókhoz, miután deklaráltad őket a DECLARE függvénnyel. Az alábbiakban különböző módokat mutatunk be az értékek SELECT használatával történő hozzárendeléséhez.
Példa: Érték hozzárendelése egy változóhoz SELECT használatával
Syntax:
DECLARE @LOCAL_VARIABLE <Data_Type> SELECT @LOCAL_VARIABLE = <Value>
Keresés:
DECLARE @COURSE_ID INT SELECT @COURSE_ID = 5 PRINT @COURSE_ID
A SELECT értékadás kinyomtatja az értéket, ahogy az alább látható.
Példa: Érték hozzárendelése több változóhoz a SELECT használatával
Syntax:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Value_1>, @Local_Variable _2 = <Value_2>
Szabály: A SET függvénnyel ellentétben a SELECT függvénnyel több, vesszővel elválasztott változóhoz is rendelhetünk értéket.
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SELECT @COURSE_ID = 5, @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Mindkét változó egyetlen SELECT-ben kerül értékadásra, az alábbiak szerint.
Példa: Érték hozzárendelése egy változóhoz egy allekérdezéssel SELECT használatával
Syntax:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = (SELECT <Column_1> from <Table_name> where <Condition_1>)
Szabályok:
- A lekérdezést zárójelbe kell tenni.
- A lekérdezésnek skaláris lekérdezésnek kell lennie, amely egy sort és egy oszlopot ad vissza. Ellenkező esetben a lekérdezés hibát dob.
- Ha a lekérdezés nulla sort ad vissza, akkor a változó EMPTY, azaz NULL értékű.
Gondoljuk át a miénketGuru99 lábas asztal.
1. példa: Amikor az alkérés egy sort ad vissza eredményeként
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 1) PRINT @COURSE_NAME
Az alkérdés egy sort ad vissza, így a változó ezt az értéket tartja meg, az alábbiak szerint.
2. példa: Amikor az alkérés eredményeként nulla sort ad vissza
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
Egyező sor hiányában a változó ÜRES, azaz NULL marad, az alábbiak szerint.
3. példa: Érték hozzárendelése egy változóhoz egy hagyományos SELECT utasítással
Syntax:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Column_1> from <Table_name> where <Condition_1>
Szabályok:
- A SET függvénnyel ellentétben, ha a lekérdezés több sort ad vissza, akkor a változó értéke az utolsó sor értékére van beállítva.
- Ha a lekérdezés nulla sort ad vissza, akkor a változó EMPTY, azaz NULL értékre van állítva.
1. lekérdezés: A lekérdezés egy sort ad vissza
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 3 PRINT @COURSE_NAME
Az egyetlen egyező sor állítja be a változó értékét, az alábbiak szerint.
2. lekérdezés: A lekérdezés több sort ad vissza
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 PRINT @COURSE_NAME
Ha több sor is egyezik, a változó az utolsó sor értékét tartja meg, az alábbiak szerint.
3. lekérdezés: A lekérdezés nulla sort ad vissza
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 5 PRINT @COURSE_NAME
Ha egyetlen sor sem egyezik, a változó EMPTY, azaz NULL értékű, az alábbiak szerint.
Egyéb SQL-változópéldák
Egy deklarált változó lekérdezéseken belül is használható, például egy WHERE záradékban sorok szűrésére.
Keresés:
DECLARE @COURSE_ID Int = 1 SELECT * from Guru99 where Tutorial_id = @COURSE_ID
A változó szűri a lekérdezést, és visszaadja a megfelelő sort, az alábbiak szerint.
Érdekes tények az SQL Server-változókról!
- Egy lokális változó megjeleníthető a PRINT és a SELECT paranccsal is.
- A tábla adattípusa nem engedélyezi az 'AS' használatát a deklaráció során.
- A SET megfelel az ANSI szabványoknak, míg a SELECT nem.
- Létrehozható egy @ nevű lokális változó is. Például a következőképpen deklarálható:
'DECLARE @@ as VARCHAR (10)'















