Comparação de Campos com NULL
06/09/2007
Sabemos que quando um variável ou um campo no Oracle está NULL, ele não pode ser simplesmente comparado a um outro valor, pois o resultado da compração também será false!
declare
a number:=null;
b number:=null;
begin
if a=b
then dbms_output.put_line('SIM');
else dbms_output.put_line('nao');
end if;
end;
SQL> /
nao
POUCO EFICIENTE
Para “sanar” este problema, é possivel usar NVL, que não é uma boa prática. Veremos porque:
if nvl(a, 123456789) = nvl(b, 123456789) then --seu código
O exemplo acima até funciona se o valor for diferente de 123456789. Se o valor for igual, ferra a comparação!
MUITO EFICIENTE
A melhor prática possível
É um pouco trabalhosa, mas sempre funcionará:
if a<>b or (a is null and b is not null) or (a is not null and b is null) then --seu codigo
Comente aqui
Tags: Curiosidade, NULL, PL/SQL
