SQL-változók: SQL Server Declare, Set and Select Variable
Mi az a változó az SQL Serverben?
Az MS SQL-ben a változók azok az objektumok, amelyek egy memóriahely helyőrzőjeként működnek. A változó egyetlen adatértéket tart.
Változótípusok SQL-ben: lokális, globális
Az MS SQL kétféle változóval rendelkezik:
- Helyi változó
- Globális változó.
A felhasználó azonban csak helyi változót hozhat létre.
Az alábbi ábra kétféle változót mutat be MS SQL szerver.
Helyi változó
- A felhasználó deklarálja a helyi változót.
- Alapértelmezés szerint a helyi változó ezzel kezdődik @.
- Minden helyi változó hatókörének megvan a korlátozása a aktuális tétel vagy eljárás bármely adott munkameneten belül.
Globális változó
- A rendszer fenntartja a globális változót. A felhasználó nem tudja ezeket deklarálni.
- A globális változó ezzel kezdődik @@
- Ez tárolja munkamenettel kapcsolatos információk.
Hogyan DECLARE egy változót SQL-ben
- Mielőtt bármilyen változót kötegben vagy eljárásban használna, meg kell tennie deklarálja a változót.
- A DECLARE parancs a DECLARE változóhoz használható, amely a memóriahely helyőrzőjeként működik.
- Csak a deklaráció megtétele után használható egy 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 nem kötelező dolog deklarálás közben.
- Alapértelmezés szerint a DECLARE a változót NULL értékre inicializálja.
- Az „AS” kulcsszó használata nem kötelező.
- Egynél több helyi változó deklarálásához használjon vesszőt az első helyi változó definíciója után, majd adja meg a következő helyi változó nevét és 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őkben értéket rendelhet egy változóhoz három módon:
- Változó deklaráció során a DECLARE kulcsszó használatával.
- A SET használatával
- A SELECT használatával
Tekintsük 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árendelendő értéket
Keresés:
DECLARE @COURSE_ID AS INT = 5 PRINT @COURSE_ID
SQL SET VARIABLE használata
Néha külön akarjuk tartani a deklarációt és az inicializálást. A SET használható értékek hozzárendelésére a változóhoz, a változó deklarálása után. Az alábbiakban bemutatjuk az értékek hozzárendelésének különböző módjait a SET használatával:
Példa: Érték hozzárendelése egy változóhoz a SET segítségével
Syntax:
DECLARE @Local_Variable <Data_Type> SET @Local_Variable = <Value>
Keresés:
DECLARE @COURSE_ID AS INT SET @COURSE_ID = 5 PRINT @COURSE_ID
Példa: érték hozzárendelése ehhez több változó a SET segítségével.
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 a kulcsszóhoz használható érték hozzárendelésére egy változó.
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
Példa: Érték hozzárendelése egy változóhoz a-val Skaláris segédlekérdezés a SET segítségével
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:
- Tegye zárójelbe a lekérdezést.
- A lekérdezésnek skaláris lekérdezésnek kell lennie. A skaláris lekérdezés egy olyan lekérdezés, amelynek eredménye csak egy sor és egy oszlop. Ellenkező esetben a lekérdezés hibát jelez.
- Ha a lekérdezés nulla sort ad vissza, akkor a változó értéke EMPTY, azaz NULL.
Feltevés: Tegyük fel, hogy a táblázat „Guru99” két oszloppal rendelkezik, az alábbiak szerint:
A további oktatóanyagokban a 'Guru99' táblázatot fogjuk használni
Példa 1: Amikor az allekérdezés eredményeként egy sort ad vissza.
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 3) PRINT @COURSE_NAME
2. példa: Amikor az allekérdezé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
Ebben az esetben a változó értéke EMPTY, azaz NULL.
SQL SELECT VARIABLE használata
A SET-hez hasonlóan a SELECT-et is használhatjuk, hogy értékeket rendeljünk a változókhoz, majd a DECLARE segítségével deklaráljunk egy változót. Az alábbiakban különböző módszereket találhat az érték hozzárendelésére a SELECT használatával:
Példa: Érték hozzárendelése egy változóhoz a SELECT segítségével
Syntax:
DECLARE @LOCAL_VARIABLE <Data_Type> SELECT @LOCAL_VARIABLE = <Value>
Keresés:
DECLARE @COURSE_ID INT SELECT @COURSE_ID = 5 PRINT @COURSE_ID
Példa: Érték hozzárendelése több változóhoz a SELECT segítségével
Syntax:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Value_1>, @Local_Variable _2 = <Value_2>
Szabályok: A SET-től eltérően a SELECT használható érték hozzárendelésére több változóhoz választja el a vessző.
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SELECT @COURSE_ID = 5, @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Példa: Érték hozzárendelése egy változóhoz egy Allekérdezéssel a SELECT segítségével
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:
- Zárójelek közé tegye a lekérdezést.
- A lekérdezésnek skaláris lekérdezésnek kell lennie. A skaláris lekérdezés az a lekérdezés, amelynek eredménye egy sor és egy oszlop. Ellenkező esetben a lekérdezés hibát jelez.
- Ha a lekérdezés nulla sort ad vissza, akkor a változó EMPTY, azaz NULL.
- Tekintse át a „Guru99” táblázatunkat
Példa 1: Amikor az allekérdezés eredményeként egy sort ad vissza.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 1) PRINT @COURSE_NAME
Példa 2: Amikor az allekérdezé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
Ebben az esetben a változó EMPTY, azaz NULL.
Példa 3: Rendes SELECT utasítással rendeljen értéket egy változóhoz.
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-től eltérően, ha a lekérdezés több sort eredményez, akkor a változó értéke az utolsó sor értékére lesz állítva.
- Ha a lekérdezés nulla sort ad vissza, akkor a változó értéke EMPTY, azaz NULL.
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
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
Ebben a speciális esetben a változó érték az az utolsó sor értékére állítva.
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
Ebben az esetben a változó EMPTY, azaz NULL.
Egyéb SQL-változópéldák
Változó használata a lekérdezésben
Keresés:
DECLARE @COURSE_ID Int = 1 SELECT * from Guru99 where Tutorial_id = @COURSE_ID
Érdekes tények az SQL Server-változókról!
- Egy helyi változó a PRINT és a SELECT COMMAND paranccsal jeleníthető meg
- Táblázat Az adattípus nem teszi lehetővé az „AS” használatát a deklaráció során.
- A SET megfelel az ANSI szabványoknak, míg a SELECT nem.
- Lokális változó létrehozása @ névvel szintén megengedett. Kijelenthetjük például így:
'DECLARE @@ as VARCHAR (10)'
Összegzésként
- A változók azok az objektumok, amelyek helyőrzőként működnek.
- Kétféle változó létezik: helyi és globális
- A változót a következő három módon rendelhetjük hozzá: 1) DECLARE használata közben 2) SET használatával 3) SELECT HASZNÁLATA