usually this is used for such thing:

you have do build dynamic where clause in application:

str_where:='1=1';
if A is not null then
str_where:=str_where||' AND T.A= '||A;
end if;
if B is not null then
str_where:=str_where||' AND T.B= '||B;
end if;
if C is not null then
str_where:=str_where||' AND T.C= '||C;
end if;

The nice thing is that you do not have to test str_where at every 'if' to add 'AND' inf front of it or not.