issoux
Messages postés58Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention 6 mai 2008
-
15 nov. 2006 à 13:42
issoux
Messages postés58Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention 6 mai 2008
-
16 nov. 2006 à 00:09
Bonjour , j'essaie de faire des condition if et else imbriqué dans une stored procedure sous sql server 2000 , mais je n'y arrive pas : probleme de syntaxe :
cs_Malkuth
Messages postés268Date d'inscriptionsamedi 22 février 2003StatutMembreDernière intervention24 avril 20134 15 nov. 2006 à 23:39
En fait Then c'est pas pour le IF en TSQL,
On dis
IF condition
commande
ELSE
commande
ou
IF condition
BEGIN
block de commandes
END
ELSE
BEGIN
block de commandes
END
THEN c'est pour les instruction CASE :
CASE
WHEN conditiona THEN
expression
WHEN conditionb THEN
expression
ELSE
expression
END
Les CASE sont évaluer comme des expressions (comme l'opérateur ?: en C) et nom pas comme des blocks conditionnel (switch en C)
EX :
SET @MaChaine = CASE
WHEN @MonInt = 3 THEN
N'MonInt vaut 3'
WHEN @MonInt = 2 THEN
N'MonInt vaut 2'
ELSE
N'MonInt vaut ?'
END;
on peux d'ailleurs dans ce cas adopter la syntaxe suivante :
SET @MaChaine = CASE @MonInt
WHEN 3 THEN
N'MonInt vaut 3'
WHEN 2 THEN
N'MonInt vaut 2'
ELSE
N'MonInt vaut ?'
END;
mais cette syntaxe n'est valable que pour tester une seule donnée et seulement des égaliter (trés proche du switch).
on ne pourat donc pas l'utiliser pour :
SET @MaChaine = CASE
WHEN @MonInt > 3 THEN
N'MonInt vaut +3'
WHEN @MonAutreInt = 2 THEN
N'MonAutreInt vaut 2'
ELSE
N'MonInt vaut ' + cast(@MonInt as nvarchar)
END;