Ces méthodes plus courtes présentent toutes plusieurs inconvénients. Elles sont lentes, non intuitives, potentiellement boguées (évitez les valeurs magiques autant que possible) et plus propriétaires que les conditions normales telles que AND/OR/IS NULL/IS NOT NULL.
NVL, DECODE, COALESCE, etc., peuvent être plus chers que vous ne le pensez.
J'ai vu cela de nombreuses fois dans plusieurs contextes différents, voici un exemple simple :
--Shorter method: Takes about 0.45 seconds
declare
j number;
begin
for i in 1 .. 1000000 loop
j := i;
if nvl(i <> j, (i is null) <> (j is null)) then
null;
end if;
end loop;
end;
/
--Normal method: Takes about 0.25 seconds
declare
j number;
begin
for i in 1 .. 1000000 loop
j := i;
if i <> j or (i is null and j is not null) or (i is not null and j is null) then
null;
end if;
end loop;
end;
/
Je vous recommande de passer la seconde supplémentaire pour le taper de manière logique. Votre code sera plus beau et s'exécutera plus rapidement.