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:

  1. Helyi változó
  2. 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.

SQL-változók
Az SQL Server változóinak típusa

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:

  1. Változó deklaráció során a DECLARE kulcsszó használatával.
  2. A SET használatával
  3. 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

Érték hozzárendelése az SQL-változóhoz

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

SQL SET VARIABLE

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

SQL SET VARIABLE

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:

SQL SET VARIABLE

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

SQL SET VARIABLE

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 SET VARIABLE

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

SQL SELECT VARIABLE

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

SQL SELECT VARIABLE

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

SQL SELECT VARIABLE

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.

SQL SELECT VARIABLE

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

SQL SELECT VARIABLE

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.

SQL SELECT VARIABLE

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.

SQL SELECT VARIABLE

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

Egyéb SQL-változó

É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