Em P/SQL, você precisa definir em quais variáveis os resultados da query serão retornados:
Selecionar tudo
create or replace procedure selecionarNome(p_cod IN NUMBER)
is
v_codigo agenda.codigo%type;
v_nome agenda.nome%type;
begin
select codigo, nome as resultado
into v_codigo, v_nome
from agenda
where codigo = p_cod;
exception
when no_data_found then
-- tratar quando não houver nenhum registro retornado
when too_many_rows then
-- tratar quando houver mais de um registro com o mesmo código
end selecionarNome;
Lembrando que, select ... into ... espera
um e apenas um registro retornado. Logo, se você consultar determinad código que possua dois ou mais registros, será lançada uma exceção (too_many_rows).
Caso não tenha nenhum registro para o código informado, será lançada uma exceção (no_data_found). No caso, seria apenas tratar cada uma no bloco exception.
Se você precisar tratar mais de uma linha retornada, utilize o for:
Selecionar tudo
for x in
(
select codigo, nome as resultado
from agenda
where codigo = p_cod
) loop
dbms_output.put_line( x.codigo||' - '||x.resultado );
end loop;
Observando apenas que, com o for, não é lançada a exceção no_data_found, logo dependendo da situação, a verificação da existência ou não de dados fica por conta do desenvolvedor.