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 ; |