cs_fabrice69
Messages postés1765Date d'inscriptionjeudi 12 octobre 2000StatutMembreDernière intervention11 décembre 20135 12 sept. 2004 à 22:30
Issu de la doc MSDN SQL Server :
Référence de Transact-SQL
IF...ELSE
Impose les conditions d'exécution d'une instruction Transact-SQL. L'instruction Transact-SQL qui suit le mot clé IF et sa condition est exécutée si la condition est remplie (lorsque l'expression booléenne renvoie la valeur TRUE). Le mot clé facultatif ELSE introduit une instruction Transact-SQL de remplacement exécutée lorsque la condition IF n'est pas remplie (si l'expression booléenne renvoie FALSE).
Expression qui renvoie la valeur TRUE ou FALSE. Si l'expression booléenne contient une instruction SELECT, cette dernière doit être mise entre parenthèses.
{sql_statement | statement_block}
Toute instruction ou tout groupe d'instructions Transact-SQL tels que définis dans un bloc d'instructions. À moins que vous n'utilisiez un bloc d'instructions, la condition IF ou ELSE ne peut affecter les performances que d'une seule instruction Transact-SQL. Pour définir un bloc d'instructions, utilisez les mots clés de contrôle de flux BEGIN et END. Les instructions CREATE TABLE ou SELECT INTO doivent se référer au même nom de table si elles sont utilisées dans les deux aires IF et ELSE du bloc IF...ELSE.
Notes
Vous pouvez utiliser les constructions IF...ELSE dans des lots, dans des procédures stockées (dans lesquelles ces constructions sont souvent utilisées pour tester l'existence de certains paramètres) et dans des requêtes appropriées.
Les tests de la condition IF peuvent être imbriqués après une autre condition IF ou après une condition ELSE. Le nombre de niveaux d'imbrication est illimité.
Exemple
A. Utilisation d'un bloc IF...ELSE
Cet exemple illustre une condition IF avec un bloc d'instructions. Si le prix moyen du titre n'est pas inférieur à 15 $, il imprime le message suivant : Prix moyen du titre supérieur à 15 $).
USE pubs
IF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') < $15
BEGIN
PRINT 'The following titles are excellent mod_cook books:'
PRINT ' '
SELECT SUBSTRING(title, 1, 35) AS Title
FROM titles
WHERE type = 'mod_cook'
END
ELSE
PRINT 'Average title price is more than $15.'
Voici le jeu de résultats obtenu :
The following titles are excellent mod_cook books:
Title
-----------------------------------
Silicon Valley Gastronomic Treats
The Gourmet Microwave
(2 row(s) affected)
B. Utilisation de plusieurs blocs IF...ELSE
Cet exemple utilise deux blocs IF. Si le prix moyen du titre n'est pas inférieur à 15 $, il imprime le message suivant : Prix moyen du titre supérieur à 15 $. Si le prix moyen des livres de cuisine moderne est supérieur à 15 $, le système imprime l'instruction selon laquelle les livres de cuisine moderne sont chers.
USE pubs
IF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') < $15
BEGIN
PRINT 'The following titles are excellent mod_cook books:'
PRINT ' '
SELECT SUBSTRING(title, 1, 35) AS Title
FROM titles
WHERE type = 'mod_cook'
END
ELSE
IF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') > $15
BEGIN
PRINT 'The following titles are expensive mod_cook books:'
PRINT ' '
SELECT SUBSTRING(title, 1, 35) AS Title
FROM titles
WHERE type = 'mod_cook'
END