Précédent   Forum des professionnels en informatique > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/07/2004, 13h35   #1
Membre actif
 
Inscription : juin 2002
Messages : 379
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 379
Points : 168
Points : 168
Par défaut [CASE] Comment ca marche ?

Bonjour, je suis en train d'ecrire un trigger dans lequel je test un champ, et suivant la valeur de ce champ, je fait un traitement particulier.
je pensais faire ca avec l'instruction CASE de cette maniere :
Code :
1
2
3
4
5
6
7
...
CASE NEW.Champ
   when 'R' then ...
   when 'D' then ...
   when 'I' then ...
else ...
...
Malheuresement, j'ai compris qu'apres que CASE est fait pour aller avec SELECT. Alors j'aimerais juste savoir si quelqu'un a une solution pour faire cela sans passer par une suite de IF imbriques ?

PS : Je travail avec Firebird 1.5

Merci d'avance.
kase74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2004, 13h57   #2
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Il n'y a à ma connaissance hélas que les if imbriqué ou si vous n'avez rien d'autre après le traitement du else (donc s'il n'y a pas de traitement commun) vous pouvez faire ceci :
Code :
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
BEGIN/*Debut procedure*/
  ...
  ...
  IF (Champ='R') then
  begin
    ...
    ...
    exit;
  end
 
  IF (Champ='D') then
  begin
    ...
    ...
    exit;
  end
 
  IF (Champ='I') then
  begin
    ...
    ...
    exit;
  end
 
  /*Traitement du else ...*/
  ...
  ...
END /*Fin de la procédure*/
Le Exit permet de dire à interbase d'aller au end final et donc de quitter la procédure (mais ne gènère pas d'exeption ou d'erreur, c'est une fin 'normale')
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2004, 14h13   #3
Membre actif
 
Inscription : juin 2002
Messages : 379
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 379
Points : 168
Points : 168
Ben oui !
Impec, cette solution me va bien

Merci Barbibulle.
kase74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h26.


 
 
 
 
Partenaires

Hébergement Web