Herhangi bir değer ile null değer karşılaştırma vb. lojik işlemlere ya da aritmetik işlemlere tabi tutulamıyor.Aşağıdaki örnekte null sting değer ile içinde Abdullah yazan string değer karşılaştırılamıyor.
declare
v_karsilastir varchar2(10):=’abdullah’;
v_tut varchar2(5);
v_deger number;
bool boolean ;
begin
select
case
WHEN V_TUT IS NULL THEN 4
when v_tut=” then 1
when v_tut=null then 2
else 3
end
into v_deger
from dual;
dbms_output.put_line(‘değer :’||v_deger);
if v_tut<>v_karsilastir then
bool:=true;
else
bool:=false;
end if;
dbms_output.put_line(‘bool :’|| case when bool = true then ‘true’ when bool=false then ‘false’end );
end;
çözümü ise aşağıdaki gibi ya da farklı şekillerde olabilir.
declare
v_karsilastir varchar2(10):=’abdullah’;
v_tut varchar2(5);
v_deger number;
bool boolean ;
begin
select
case
WHEN V_TUT IS NULL THEN 4
when v_tut=” then 1
when v_tut=null then 2
else 3
end
into v_deger
from dual;
dbms_output.put_line(‘değer :’||v_deger);
if v_karsilastir<>nvl(v_tut,’ ‘) then
bool:=true;
else
bool:=false;
end if;
dbms_output.put_line(‘bool :’|| case when bool = true then ‘true’ when bool=false then ‘false’end );
end;
follow: