[firebase-br] Capturando erro do Firebird

Alessandro Lúcio Cordeiro da Silva alecordeirosilva em yahoo.com.br
Qui Fev 9 09:48:52 -03 2006


Oi Alisson, 

  Isso mesmo a minha função validacpf retornar V ou F,se for falso, passo pro parametro de saida o p_retorno uma mensagem indicando que o cpf esta inválido, até ai não existe mensagem do banco, mas no comando INSERT, onde esta protegido entre BEGIN-WHEN ANY, pode ocorrer algum erro do tipo VIOLAÇÃO DE CHAVE ou um campo como sexo vier um valor não permitido, uma vez que so poderia M ou F. Queria que o meu parametro p_retorno recebece a mensagem do firebird. e o meu paramatro p_ok receberia 'N', indicando que ocorreu um erro.

   Sei que o firebird retornaria pro aplicativo a mensagem sem necessidade de capturar o erro , mas não quero que o firebird gera uma excessão.



Alisson <arsuart em uol.com.br> escreveu: Mas neste momento o Firebird nao vai emitir mensagem alguma neh....???
pelo q entendi.. vc executa um procedimento ou funçao validando o CPF.. e 
esse procedimento vai lhe retornar True ou False.. ai baseando nesta 
informaçao.. vc vai saber c deu certo ou nao... nao eh isto...??? entao acho 
q realmente nao teria a mensagem do banco.. apenas ele vai executar 
naturalmente.. e fazer o q vc criou.... c eu entendi corretamente o q vc 
quer...!!!




"Alessandro Lúcio Cordeiro da Silva" 
 escreveu na 
mensagem news:20060203150457.60216.qmail em web35903.mail.mud.yahoo.com...
Olá Pessoal.

  Se alguém puder me ajudar ficarei muito agradecido.

Fiz um procedimento que me traz dois parametros de saida o p_ok e o 
p_retorno.

  O p_ok é um sinalizador que indica se tudo ocorreu bem ou não e o 
p_retorno e a mensagem que pode ser que tudo deu certo ou que deu um erro, 
que posso provocar  como o caso do cpf invalido, mas queria a mensagem do 
firebird. Como captura as mensagens do Firebird pra passar pro parametro 
p_retorno.

Create  procedure cadastro_cliente (P_PK_CLIENTE          integer,
                                                    P_NOME 
varchar(50)
                                                    )
returns (p_retorno varchar(100),
         p_ok      char(1))
as
declare variable v_cpf_valido char(1);
begin
    -- Executar o testa cpf
    execute procedure validacpf(:p_cpf) returning_values :v_cpf_valido;
    if (:v_cpf_valido = 'F') then--Se cpf invalido
  begin
    p_retorno = 'CPF do Cliente Inválido';
    p_ok      = 'N';
    exit;
  end;

    -- Sessão de tratamento
    begin
      insert into cliente (PK_CLIENTE,
                              NOME,
                         values
                       (gen_id(gen_cliente,1),
                        :P_NOME,
    p_retorno = 'Registro Inserido com Sucesso';
      p_ok = 'S';
      -- Se ocorreu algum erro
      when any do
      begin
        p_ok = 'N';
        p_retorno = 'Ocorreu um erro Cód.'||SQLCODE||' - ' <É aqui que quero 
concatenar com o texto do firebird>
      end;
  end
end.

  OBS.: NÃO QUERO CRIAR UMA EXCESSÃO E NEM DEIXAR O FIREBIRD GERAR UMA 
EXCESSÃO.



---------------------------------
 Yahoo! doce lar. Faça do Yahoo! sua homepage.
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço 
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa




______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa

		
---------------------------------
 Yahoo! Acesso Grátis 
Internet rápida e grátis. Instale o discador agora!


Mais detalhes sobre a lista de discussão lista