Les instructions IF..ELSE dans MS SQL Server

Généralement, l’instruction IF..ELSE est une instruction de prise de décision dans divers langages de programmation. L’instruction IF est utilisée pour exécuter un bloc de code si une condition est satisfaite. Si une condition n’est pas satisfaite (FAUX) alors, facultativement, l’instruction ELSE peut être utilisée.

Dans le cas de SQL Server, l’instruction IF est utilisée pour exécuter des instructions SQL si une condition est VRAIE.

Par exemple :

1
2
3
4
5
6
7

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

Dans le code ci-dessus, le @nom_table est une variable. Si une valeur assignée à cette variable est “employees”, l’instruction IF récupérera les données de la table sto_employees. Si la valeur de la variable est autre que “employee”, la condition IF devient FALSE et la partie ELSE s’exécutera.

Je vous montrerai cette utilisation simple dans les exemples ci-dessous avec la sortie. Dans la dernière section, j’expliquerai également comment remplir l’objectif “ELSE IF” qui n’est pas disponible dans SQL Server.

Un exemple simple d’utilisation de l’instruction IF sans ELSE

Démarrons avec un exemple simple d’utilisation de l’instruction SQL IF. Nous allons évaluer une variable de type int pour vérifier sa valeur. Si la condition est VRAIE, l’instruction IF doit imprimer une déclaration.

Le code :

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

/*Déclarer une variable*/
DECLARE @val_chk INT ;
/*Assignation d’une valye*/
SET @val_chk = 101;
/*Exécution de l’instruction IF*/
IF @val_chk = 101
PRINT ‘L’instruction IF est VRAIE’ ;
GO

La sortie du code ci-dessus est :

“L’instruction IF est VRAIE”

Comme tel, la valeur de la variable est 101.

Et si la condition était FAUSSE?

Si la condition ci-dessus était FAUSSE, par exemple si la valeur de la variable était autre que 101, alors rien ne se produirait.

Dans le scénario du monde réel, vous pouvez vouloir exécuter une déclaration ou effectuer une action comme la condition dans l’instruction IF est VRAIE ou FAUSSE.

Pour cela, utilisez l’instruction ELSE. L’instruction à l’intérieur de l’instruction ELSE s’exécute si la condition de l’instruction IF n’est pas satisfaite.

Voyez ci-dessous une démonstration de l’utilisation de l’instruction ELSE :

Le CODE IF ELSE :

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

/*Déclarer une variable*/
DECLARE @val_chk INT ;
/*Assignation d’une valye*/
SET @val_chk = 50;
/*Exécution de l’instruction IF*/
IF @val_chk >= 101
PRINT ‘L’instruction IF est VRAIE’ ;
ELSE
PRINT ‘L’instruction IF est FAUX’;
GO

La sortie du code ci-dessus est : “L’instruction IF est FAUX” car la valeur de la variable n’est pas supérieure ou égale à 101.

Exécution d’une instruction SELECT basée sur la valeur VARCHAR

Maintenant, laissez-moi vous montrer un exemple d’utilisation d’une valeur de chaîne de caractères dans l’instruction IF. On déclare une variable de type chaîne de caractères et on lui attribue une valeur.

Dans les instructions IF…ELSE, nous allons vérifier la valeur de la variable et exécuter l’instruction SELECT correspondante. Jetez un coup d’œil :

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

/*Déclaration d’une variable de type chaîne de caractères*/
DECLARE @nom_table VARCHAR(60) ;
/*Attribution d’une valeur*/
SET @table_name = ’employees’;
/*Exécution de l’instruction IF*/
IF @table_name = ’employees’
SELECT * FROM sto_employees ;
ELSE
SELECT * FROM sto_products;
GO

La sortie du code ci-dessus est :

SQL IF ELSE

Que faire si nous avons plusieurs choix à vérifier ? (NESTED IF)

Dans les exemples ci-dessus, nous n’avions que deux options. Soit la valeur est VRAIE ou FAUX. Si VRAI, l’instruction à l’intérieur de l’IF s’exécute, sinon, la partie ELSE s’exécute.

Dans le cas de l’exécution d’instructions SELECT, disons que nous avons besoin de vérifier différents noms de table et d’exécuter l’instruction SELECT respective pour chacun ; alors comment pouvons-nous le faire ?

La réponse est d’utiliser l’instruction IF NESTED.

Par exemple, si la valeur de la variable est ’employés’ alors exécutez la :

SELECT * FROM sto_employees;

Si la valeur est produits alors exécutez :

SELECT * FROM sto_products;

Pour toute autre valeur:

SELECT * FROM sto_emp_salary_paid;

Voyez comment cela est traduit en instructions IF NESTED en SQL :

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

/*Déclaration d’une variable chaîne de caractères*/
DECLARE @nom_table VARCHAR(60) ;
/*Assignation d’une valeur*/
SET @table_name = ‘products’;
/*Exécution de l’instruction IF*/
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

Vous pouvez voir qu’à l’intérieur de l’instruction ELSE, le mot-clé BEGIN est utilisé là où une autre instruction IF est placée (l’IF imbriqué). Ceci est terminé en utilisant le mot-clé END.

Ici, nous avons placé une autre condition à vérifier. Essayez différentes valeurs pour la variable @nom_table par vos propres noms de table et remplacez-les dans l’instruction SELECT également pour en faire l’expérience vous-même.

Aller un autre niveau dans l’instruction IF imbriquée

Juste pour montrer que vous pouvez imbriquer à plusieurs niveaux, je suis allé plus loin en utilisant une autre instruction IF imbriquée.

Donc, le scénario est de vérifier la valeur d’une variable (nom_table). si la valeur est produits alors récupérer les données de la table sto_produits. Si la valeur est employés alors récupérer les enregistrements de sto_employés. Le troisième if vérifie si la valeur de la variable est commandes alors récupère les enregistrements de la table commandes.

Enfin, l’instruction ELSE pour toute autre valeur de la variable devrait obtenir les enregistrements de la table salaires payés des employés.

Voyez l’instruction IF imbriquée multiple pour trois conditions plus 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

/*Déclaration d’une variable chaîne de caractères*/
DECLARE @nom_table VARCHAR(60) ;
/*Assignation d’une valeur*/
SET @table_name = ‘orders’;
/*Exécution de l’instruction IF*/
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

Comme j’ai défini la valeur de la variable comme commandes, l’instruction IF devrait retourner les enregistrements de la table sto_commandes.

Dans le code, vous pouvez voir que la troisième instruction IF est commencée après le deuxième mot-clé BEGIN.

Note : Si vous voulez utiliser l’exécution conditionnelle dans l’instruction SELECT, alors utilisez l’instruction CASE en SQL.

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.