Използването на COUNT(*) е ОК, ако използвате и rownum=1:
declare
l_cnt integer;
begin
select count(*)
into l_cnt
from x
where x.col_a = value_a
and x.col_b = value_b
and rownum = 1;
end;
Това винаги ще връща ред, така че няма нужда да обработвате изключение NO_DATA_FOUND. Стойността на l_cnt ще бъде 0 (няма редове) или 1 (съществува поне 1 ред).