[firebase-br] Uma contribuição para os colegas: uma nova versão de rotina de validação de CPF e CNPJ

Francisco Carlos da Rocha Gomes fcarlos em cpafac.embrapa.br
Seg Fev 8 15:09:12 -03 2010


Oi Samuel,

É que eu tenho bd antigo em firebird cujo front-end não validou os dados 
de cpf gravados nele. Daí criei essa rotina para que, a partir de uma 
select numa stored procedure que invoca essa rotina, eu pudesse 
identificar quais CPFs foram inseridos errados.

Em suma, essa stored procedure de validação de cpf é boa para casos de 
consulta de dados já gravados, identificando se há códigos inválidos.

Além disso, conforme a dica do link abaixo, é possível colocar a rotina 
de validação numa trigger "before insert" evitando que um código 
inválido seja inserido no bd.

http://www.firebase.com.br/fb/artigo.php?id=917

Exemplos:
/*
  Store Procedure para consulta de verificacao de codigos gravados
*/
create procedure SP_VER_CPFCNPJ 
returns (
    nome varchar(50),
    cpfcnpj varchar(20),
    codigo_ok CHAR(1))
as
begin
  for select nome, cpfcnpj
      from pessoa
      into :nome, :cpfcnpj
  do begin

    select cpfcnpj_ok
    from cpfcnpj_ok(:cpfcnpj)
    into :codigo_ok;

     suspend;
  end
end


/*
  Trigger before insert que evita codigo invalido
*/

create trigger pessoa_valida_cpfcnpj for pessoa active before insert 
position 0
as
  declare variable codigo_ok char(1);
begin
  if (cpfcnpj <> '') then
  begin
    execute procedure cpfcnpj_ok new.cpfcnpj
    returning values codigo_ok;

    if (codigo_ok = 'n') then
    begin
      exception exc_valida_CPF;
    end
  end
  if (new.codpessoa is null) then
    new.codpessoa = GEN_ID(GEN_codpessoa, 1);
end




Francisco Carlos,
Embrapa Acre



samuel ferreira wrote:
> ola
>
> primeiro, obrigado carlos pelo compartilhamento, mas so pra eu entender,
> qual a vantagem de fazer uma validacao no banco? Faco isso sempre na minha
> aplicacao. Gostaria de saber os porques.
>
> samuel
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>   




Mais detalhes sobre a lista de discussão lista