[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