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 :

Comparaison de varchar2 (if then)


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 221
    Par défaut Comparaison de varchar2 (if then)
    Salut tout le monde!

    J'utilise un trigger BEFORE en guise de contrainte check utilisant des fonctions, ce trigger contient un "if variable1 <> variable2 then" où variable1 et variable2 sont des varchar2(38). Même si c'est visiblement différent, le code passe toujours dans ELSE

    Ex de démonstration:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    declare
    v_1 varchar2(38);
    v_2 varchar2(38);
    begin
    v_2 := NULL;
    v_1 := 'Randriano';
    if (v_1 <> v_2) then
      dbms_output.put_line('OK');
    else
      dbms_output.put_line('NOT OK');
    end if;
    end;
    Ça affiche toujours NOT OK!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    declare
    v_1 varchar2(38);
    v_2 varchar2(38);
    begin
    if (v_1 = v_2) then
      dbms_output.put_line('OK');
    else
      dbms_output.put_line('NOT OK');
    end if;
    end
    Ça affiche toujours NOT OK aussi!!

    Mon trigger ne marche donc plus à tous les coups même si j'utilise = ou != à la place de <> à cause de cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    DECLARE 
     
     
    	v_return int;
     
    BEGIN  
     
    	v_return:= IsSubGroup(:new.ID, :new.IDParentClass4) ;    
     
      if (/*(v_return = 0) and */(:new.ID <> :new.IDParentClass4)) then 
         null; 
      else 
     
        raise_application_error(-20000,'Error fatal'); 
     
      end if   ; 
     
     
     
     
    END ;
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  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
    NULL c'est "pas de valeur" donc incomparable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF (v_1 <> v_2 OR (v_1 IS NULL AND v_2 IS NULL)) then
    pour info : http://sqlpro.developpez.com/cours/null/

  3. #3
    Membre extrêmement actif
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 221
    Par défaut
    NULL c'est "pas de valeur" donc incomparable.
    D'accord, merci pour le lien
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

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

Discussions similaires

  1. [XL-2003] Syntaxe If Then / Comparaison de deux colonnes
    Par ash.wizard dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 10/02/2011, 19h17
  2. Colonne de type varchar2 et comparaison d'un nombre
    Par macben dans le forum PL/SQL
    Réponses: 5
    Dernier message: 04/03/2009, 11h01
  3. Comparaison de varchar2
    Par hichcasa dans le forum SQL
    Réponses: 6
    Dernier message: 16/09/2008, 13h41
  4. comparaison de 2 dates
    Par eisti dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 11/08/2003, 11h33
  5. Comparaison d'un registre 8 bits avec une variable 32 bits
    Par tupperware dans le forum x86 32-bits / 64-bits
    Réponses: 3
    Dernier message: 15/10/2002, 10h25

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