If et else dans stored procedure [Résolu]

issoux 58 Messages postés lundi 25 avril 2005Date d'inscription 6 mai 2008 Dernière intervention - 15 nov. 2006 à 13:42 - Dernière réponse : issoux 58 Messages postés lundi 25 avril 2005Date d'inscription 6 mai 2008 Dernière intervention
- 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 :

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
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
cs_Malkuth 278 Messages postés samedi 22 février 2003Date d'inscription 24 avril 2013 Dernière intervention - 15 nov. 2006 à 23:39
3
Merci
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;

Merci cs_Malkuth 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de cs_Malkuth
issoux 58 Messages postés lundi 25 avril 2005Date d'inscription 6 mai 2008 Dernière intervention - 16 nov. 2006 à 00:09
0
Merci
Merci bcp
Commenter la réponse de issoux

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.