Tratar Exception Procedure Filha

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
priajf
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 297
Registrado em: Ter, 21 Dez 2010 8:45 am
Localização: Florianopolis

Bom dia Pessoal,
Seguinte, tenho uma package que possui uma procedure mãe e 5 filhas.
Como faço para as exception das procedures filhas retornar para a mãe?

Grata
spernega
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Ter, 19 Jun 2007 2:12 pm
Localização: São Paulo - SP

Bom dia,

As filhas tem que ter um parâmetro OUT que retorna para a mãe.
E a mão trata os erros.

Essa resposta é meio simplista mas é basicamente isso
spernega
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Ter, 19 Jun 2007 2:12 pm
Localização: São Paulo - SP

mãe e não mão :?
priajf
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 297
Registrado em: Ter, 21 Dez 2010 8:45 am
Localização: Florianopolis

Então,
Chegamos a fazer por aqui nesse sentido, porém o seu retorno está nulo, em vez de vir o -1, como pretendo.

Selecionar tudo

procedure mãe is
begin
open cMae; 
        loop
        fetch cMaeinto vMae;
        exit when cMae%notfound; 

         filha(pretorno);
end;


Selecionar tudo

procedure filha ( pretorno OUT integer) is
begin
EXCEPTION
  WHEN OTHERS THEN
 pretorno := -1;
end;
spernega
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Ter, 19 Jun 2007 2:12 pm
Localização: São Paulo - SP

Fiz um teste simples e retorna correto.

Selecionar tudo

create or replace 
procedure filha (pretorno out integer) is
begin
  raise no_data_found;
exception
 when no_data_found then 
  pretorno := '-1';
 when others then 
  pretorno := '-2';
end;
/

Selecionar tudo

create or replace 
procedure mae is
 v_erro_filha integer;
begin
  filha (v_erro_filha);
  dbms_output.put_line(to_char(v_erro_filha));
end;
/

Poderia ter algum problema com o seu cursor e não chegar a executar a filha?
priajf
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 297
Registrado em: Ter, 21 Dez 2010 8:45 am
Localização: Florianopolis

Vou dar uma olhada no Loop
Responder
  • Informação
  • Quem está online

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