Att använda COUNT(*) är OK om du också använder 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;
Detta kommer alltid att returnera en rad, så du behöver inte hantera något NO_DATA_FOUND undantag. Värdet på l_cnt kommer att vara 0 (inga rader) eller 1 (minst 1 rad finns).