Acho que o que você está perguntando é que está recebendo várias linhas no o/p quando está usando
a função na instrução select.
se eu criar uma função da seguinte forma:
create or replace function get1job
(id in varchar2)
return varchar2 is
tittle jobs.JOB_TITLE%type;
begin
select job_title into tittle from jobs where job_id=id;
return tittle;
end get1job;
e use-o na instrução select.
escreverei :
select get_job('AD_PRES') from dual;
eu vou pegar apenas uma linha
se eu escrever:
select get_job('AD_PRES') from jobs;
o número de linhas exibidas será igual ao número de linhas nas tarefas da tabela.