Como chamar uma function com retorno do tipo record

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
omatheus
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 9
Registrado em: Sex, 02 Dez 2011 10:02 am

Bom dia a todos, estou precisando de uma ajuda.

Tenho o seguinte codigo plsql, estou usando oracle 11g.

Selecionar tudo

-- declaração do tipo
type reg_retorno_cli is record (p_cep          cadcli.cep%type,
                                             p_cidade      cadcli.cidade%type);
                                

-- função que seleciona os dados das tabelas e retorna um reg com os 2 campos.
function fun_valida_dados(p_codigo       cadcli.codigo%type,
                                        p_nome         cadcli.nome%type,
                              )
 ... carrego os campos cep e cidade na variavel reg_retorno_cli
 return reg_retorno_cli;      
 
 
 Create or replace procedure testa;
 begin
     vcodcli:= 1;
     vnome:= X;
  .. chamada da função (os 2 campos em variaveis da procedure
      [b]fun_valida_dados(vcodcli, vnome); -- como atribuir os dados ?[/b]
 end;
** Como faço para na minha procedure chamar a function e receber os dados dos 2 campos separados para imprimir na tela. Não sei como faço isso.
Se alguém tiver alguma dica agradeço.

Obrigado
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother,

Veja se este exemplo o ajuda:

Selecionar tudo



declare 
  -- type que receberá o retorno
  type tret_pessoa is record (nome varchar2(100)
                             ,idade pls_integer);
  vretorno tret_pessoa;                                


  -- função que retorna os valores (Nome e Idade)
  function fun_ret_pessoa 
  return tret_pessoa
  is 
     vret_pessoa tret_pessoa;
  begin
    --
    vret_pessoa.nome  := 'Trevisolli';
    vret_pessoa.idade := 99;
    --
    return vret_pessoa;
  end fun_ret_pessoa;                                                          
  --                        
begin
  -- Chamada da função
  vretorno := fun_ret_pessoa;
  -- Print dos dados 
  dbms_output.put_line('Nome: '||vretorno.nome);
  dbms_output.put_line('Idade: '||vretorno.idade);
  
end; 
Acabei fazendo tudo num bloco anônimo e, com retorno fixo da procedure,mas, somente pra exemplificar se é isso q precisa.

Abraço,
omatheus
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 9
Registrado em: Sex, 02 Dez 2011 10:02 am

Obrigado pela dica, funcionou perfeitamente.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 6 visitantes