IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PL/SQL Oracle Discussion :

Test de chaines dans IF


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 7
    Par défaut Test de chaines dans IF
    Bonjour

    Je démarre en PL SQL et j'aimerais savoir s'il existe une façon particulière de tester l'égalité entre une variable de type VARCHAR2(20 CHAR) - par exemple - avec une chaine de caractères écrite en dur.

    Dans mon cas j'ai avant le 'begin' de ma proc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     toto  VARCHAR2(20 CHAR) ;
    et dans le begin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if toto = 'KO' then
    ...
    else if;
    Ma variable toto ne peut prendre que les valeurs 'OK' ou 'KO'. Cependant, que la variable soit KO ou KO je rentre invariablement dans le if

    Merci pour vos réponses!!

  2. #2
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    affiche sa valeur avec dbms_output.put_line pour en avoir le coeur net

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Par défaut Et pourtant elle tourne...
    Quand j'essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    DECLARE
     toto  VARCHAR2(20 CHAR) ;
    BEGIN
      toto:='OK';
      IF toto = 'KO' then
         dbms_output.put_line ('toto égal à KO');
      else 
         if toto = 'OK' then
           dbms_output.put_line ('toto égal à OK');
         end if;
      end if;
    end;
    Cela fonctionne sans problème.
    Le seul problème que je vois dans ton code c'est que tu ne met pas de 'END IF;'

  4. #4
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    J'pensais surtout à afficher toto

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dbms_output.put_line (toto);
    IF toto = 'KO' then
    ...
    else IF;

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 32
    Par défaut
    Voici les formes de structure conditionnelle IF-THEN:


    * IF condition THEN instructions;
    ELSE
    IF condition THEN instructions;
    ELSE instructions;
    END IF;
    END IF;

    * IF condition THEN instructions;
    ELSIF condition THEN instructions;
    ELSE instructions;
    END IF;

  6. #6
    Membre expérimenté Avatar de mongilotti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    314
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2003
    Messages : 314
    Par défaut
    est ce que tu as essaye d'afficher toto au lieu des chaines.

  7. #7
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Attention aussi à la nullité de la valeur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF Nvl(toto,'-') = 'KO' then

  8. #8
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    [ame="http://fr.wikipedia.org/wiki/Logique_ternaire"]Logique ternaire[/ame]

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 7
    Par défaut
    Merci de vos réponses en réalité le bug provenait du fait que dans ma chaine à comparer il y avait un...espace au début!!!
    Bref, quand vous concatenez des chaines pensez à utiliser la fonction trim, qui supprimer tous les espaces...

    Aussi, à la fin de mon code il y avait bien sur un "end if" et non un "else if"...

    Merci à tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Test de chaine de caractère dans les $_POST[]
    Par arnogb69 dans le forum Langage
    Réponses: 2
    Dernier message: 05/08/2008, 09h35
  2. Réponses: 2
    Dernier message: 14/11/2007, 16h43
  3. Réponses: 2
    Dernier message: 06/12/2006, 13h36
  4. Réponses: 23
    Dernier message: 16/11/2002, 19h41
  5. Réponses: 2
    Dernier message: 10/07/2002, 11h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo