If et else dans stored procedure [Résolu]

Signaler
Messages postés
58
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
6 mai 2008
-
Messages postés
58
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
6 mai 2008
-
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 :

savez vous me dire comment s'y prendre :

ce que j'ai fait :

if @role='admin' then  select * from admin

else if @role='user' then select * from user

mais apparemment ca bug

merci de votre aide

2 réponses

Messages postés
268
Date d'inscription
samedi 22 février 2003
Statut
Membre
Dernière intervention
24 avril 2013
3
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;
Messages postés
58
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
6 mai 2008

Merci bcp