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 ;