Az IF..ELSE utasítások az MS SQL Serverben

Az IF..ELSE általában véve egy döntéshozó utasítás a különböző programozási nyelvekben. Az IF utasítás egy kódblokk végrehajtására szolgál, ha egy feltétel teljesül. Ha egy feltétel nem teljesül (FALSE), akkor opcionálisan ELSE utasítás használható.

Az SQL Server esetében az IF utasítás az SQL utasítások végrehajtására szolgál, ha egy feltétel TRUE.

Például:

1
2
3
4
5
6
7

IF @table_name = ’employees’
SELECT * FROM sto_employees;
ELSE
SELECT * FROM sto_products;

A fenti kódban a @table_name egy változó. Ha a változóhoz rendelt érték “employees”, akkor az IF utasítás a sto_employees táblából fogja lekérni az adatokat. Ha a változó értéke nem “employee”, akkor az IF feltétel FALSE lesz, és az ELSE rész fog végrehajtódni.

Az alábbi példákban ezt az egyszerű használatot mutatom be a kimenettel együtt. Az utolsó szakaszban azt is elmagyarázom, hogyan lehet teljesíteni az “ELSE IF” célt, amely nem áll rendelkezésre az SQL Serverben.

Egy egyszerű példa az IF utasítás használatára ELSE nélkül

Hadd kezdjem egy egyszerű példával az IF SQL utasítás használatára. Egy int típusú változót fogunk kiértékelni, hogy ellenőrizzük az értékét. Ha a feltétel TRUE, akkor az IF utasításnak ki kell írnia egy utasítást.

A kód:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

/*Változó deklarálása*/
DECLARE @val_chk INT;
/*Változó hozzárendelése*/
SET @val_chk = 101;
/*Az IF utasítás végrehajtása*/
IF @val_chk = 101
PRINT ‘Az IF utasítás igaz’;
GO

A fenti kód kimenete a következő:

“Az IF utasítás TRUE”

Akként a változó értéke 101.

Mi lenne, ha a feltétel HAMIS lenne?

Ha a fenti feltétel HAMIS lenne, pl. a változó értéke nem 101, akkor nem történne semmi.

A való életben előfordulhat, hogy egy utasítást szeretnénk végrehajtani vagy valamilyen műveletet végrehajtani, mivel az IF utasításban szereplő feltétel TRUE vagy FALSE.

Ezért használjuk az ELSE utasítást. Az ELSE utasításon belüli utasítás akkor hajtódik végre, ha az IF utasításban szereplő feltétel nem teljesül.

Az ELSE utasítás használatának alábbi bemutatója:

Az IF ELSE KÓD:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

/*Változó deklarálása*/
DECLARE @val_chk INT;
/*Változó hozzárendelése*/
SET @val_chk = 50;
/*Az IF utasítás végrehajtása*/
IF @val_chk >= 101
PRINT ‘Az IF utasítás igaz’;
ELSE
PRINT ‘Az IF utasítás TÖRVÉNYES’;
GO

A fenti kód kimenete a következő: “Az IF utasítás FALSE”, mivel a változó értéke nem nagyobb vagy egyenlő 101-nél.

VARCHAR értéken alapuló SELECT utasítás végrehajtása

Most hadd mutassak egy példát a string érték IF utasításban való használatára. Egy string változót deklarálunk és értéket rendelünk hozzá.

Az IF…ELSE utasításokban ellenőrizzük a változó értékét és végrehajtjuk a megfelelő SELECT utasítást. Nézze meg!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

/*String változó deklarálása*/
DECLARE @table_name VARCHAR(60);
/*Egy érték hozzárendelése*/
SET @table_name = ’employees’;
/*Az IF utasítás végrehajtása*/
IF @table_name = ’employees’
SELECT * FROM sto_employees;
ELSE
SELECT * FROM sto_products;
GO

A fenti kód kimenete a következő:

SQL IF ELSE

Mi van, ha több választási lehetőséget kell ellenőriznünk? (NESTED IF)

A fenti példákban csak két lehetőségünk volt. Vagy az érték TRUE vagy FALSE. Ha TRUE, akkor az IF-ben lévő utasítás végrehajtódik, ellenkező esetben az ELSE rész hajtódik végre.

A SELECT utasítások végrehajtása esetén, mondjuk, hogy különböző táblázatok nevét kell ellenőriznünk, és mindegyikhez a megfelelő SELECT utasítást kell végrehajtanunk; akkor hogyan tudjuk ezt megtenni?

A válasz a NESTED IF utasítás használata.

Ha például a változó értéke ’employees’, akkor hajtsa végre a:

SELECT * FROM sto_employees;

Ha az érték products, akkor hajtsa végre:

SELECT * FROM sto_products;

Minden más érték esetén:

SELECT * FROM sto_emp_salary_paid;

Nézzük, hogyan fordítható ez NESTED IF utasítássá az SQL-ben:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

/*String változó deklarálása*/
DECLARE @table_name VARCHAR(60);
/*Egy érték hozzárendelése*/
SET @table_name = ‘products’;
/*Az IF utasítás végrehajtása*/
IF @table_name = ’employees’
SELECT * FROM sto_employees;
ELSE
BEGIN
IF @table_name = ‘products’
SELECT * FROM sto_products;
ELSE
SELECT * FROM sto_emp_salary_paid;
END ;
GO

Láthatjuk, hogy az ELSE utasításon belül a BEGIN kulcsszót használjuk, ahová egy másik IF utasítás kerül (a nested IF). Ezt az END kulcsszóval fejezzük be.

Ezzel egy újabb ellenőrizendő feltételt helyeztünk el. Próbáljuk ki a @table_name változó különböző értékeit a saját táblázatneveinkkel, és cseréljük ki a SELECT utasításban is, hogy magunk is megtapasztalhassuk.

Egy másik szintre lépünk a beágyazott IF utasításban

Csak azért, hogy megmutassuk, hogy több szintre is beágyazhatunk, tovább megyek egy másik beágyazott IF utasítás használatával.

A forgatókönyv szerint tehát egy változó (table_name) értékét kell ellenőrizni. ha az érték products, akkor lekérjük az adatokat a sto_products táblából. Ha az érték az alkalmazottak, akkor a sto_employees rekordok lekérése. A harmadik if ellenőrzi, hogy a változó értéke orders-e, akkor hozza le a rekordokat a orders táblából.

Végezetül az ELSE utasításnak a változó bármely más értékére le kell hoznia a munkavállaló fizetett fizetése táblázat rekordjait.

Lássuk a többszörösen egymásba ágyazott IF utasítást három feltételhez plusz ELSE:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

/*String változó deklarálása*/
DECLARE @table_name VARCHAR(60);
/*Egy érték hozzárendelése*/
SET @table_name = ‘orders’;
/*Az IF utasítás végrehajtása*/
IF @table_name = ’employees’
SELECT * FROM sto_employees;
ELSE
BEGIN
IF @table_name = ‘products’
SELECT * FROM sto_products;
ELSE
BEGIN
IF @table_name = ‘orders’
SELECT * FROM sto_orders;
ELSE
SELECT * FROM sto_emp_salary_paid;
END ;
END ;
GO

Mivel a változó értékét rendeléseknek állítom be, az IF utasításnak a sto_orders táblából kell visszaadnia a rekordokat.

A kódban látható, hogy a harmadik IF utasítás a második BEGIN kulcsszó után kezdődik.

Megjegyzés: Ha feltételes végrehajtást szeretne használni a SELECT utasításban, akkor használja a CASE utasítást az SQL-ben.

.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.