Вы запутали свой код, и я подозреваю, что скрыли проблему в процессе.
Я подозреваю, что ваш код больше похож на
create or replace FUNCTION FUNC_FAAL(myNumberColumn number,firstDate date
, secondDate date)
RETURN INTEGER as
rtr integer;
BEGIN
select count(*) into rtr
from my_table tbl where tbl.myDateColumn between firstDate and
secondDate and tbl.kkct is null and tbl.myNumberColumn = myNumberColumn ;
return (rtr);
END FUNC_FAAL;
где параметр или локальная переменная имеет то же имя, что и столбец в таблице. В SQL столбец таблицы имеет приоритет, поэтому переменная не используется, и столбец сравнивается с самим собой, что дает большее количество совпадений.
Лучше всего ставить префикс переменных и параметров (например, v_ и p_), чтобы избежать таких проблем.