Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
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 09/09/2008, 10h43   #1
Membre chevronné
 
Avatar de randriano
 
Homme Rija Randriano
Inscription : janvier 2007
Messages : 984
Détails du profil
Informations personnelles :
Nom : Homme Rija Randriano
Localisation : Madagascar

Informations forums :
Inscription : janvier 2007
Messages : 984
Points : 729
Points : 729
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 :
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 :
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 :
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
randriano est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2008, 12h00   #2
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
NULL c'est "pas de valeur" donc incomparable.

Code :
IF (v_1 <> v_2 OR (v_1 IS NULL AND v_2 IS NULL)) then
pour info : http://sqlpro.developpez.com/cours/null/
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2008, 14h33   #3
Membre chevronné
 
Avatar de randriano
 
Homme Rija Randriano
Inscription : janvier 2007
Messages : 984
Détails du profil
Informations personnelles :
Nom : Homme Rija Randriano
Localisation : Madagascar

Informations forums :
Inscription : janvier 2007
Messages : 984
Points : 729
Points : 729
Citation:
NULL c'est "pas de valeur" donc incomparable.
D'accord, merci pour le lien
__________________
randriano.dvp.com
randriano 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 22h26.


 
 
 
 
Partenaires

Hébergement Web