quarta-feira, 4 de setembro de 2013

Arrumando CNPJ no banco de dados


CREATE OR replace FUNCTION Arruma_cnpj (cnpj IN VARCHAR2)
RETURN VARCHAR2

IS

  tamahocnpj  NUMBER;
  diferenca   NUMBER;
  novocnpj    VARCHAR2(100);
  mascarazero VARCHAR2(20);

BEGIN

    novocnpj := Replace(cnpj, '.', '');

    novocnpj := Replace(novocnpj, '/', '');
    novocnpj := Replace(novocnpj, '-', '');
    novocnpj := Replace(novocnpj, ' ', '');
    novocnpj := Translate(novocnpj, 'âàãáäÂÀÃÁÄêèẽéëÊÈẼÉËîìĩíïÎÌĨÍÏôòõóöÔÒÕÓÖûùũúüÛÙŨÚÜñỹṽçÑỸṼÇ', 'AAAAAAAAAAEEEEEEEEEEIIIIIIIIIIOOOOOOOOOOUUUUUUUUUUNYVCNYVC');
    novocnpj := Regexp_replace(novocnpj, '[a-zA-Z\ ]', '');
    tamahocnpj := Length(novocnpj);


    IF tamahocnpj IS NULL THEN
      tamahocnpj := 0;
    END IF;
    diferenca := 14 - tamahocnpj;


    IF diferenca > 0 THEN
      mascarazero := '00000000000000000000';

      novocnpj := Substr(mascarazero, 0, diferenca)|| novocnpj;
    END IF;

    novocnpj := Substr(novocnpj, 0, 2|| '.'
             || Substr(novocnpj, 3, 3|| '.'
             || Substr(novocnpj, 6, 3|| '/'
             || Substr(novocnpj, 9, 4|| '-'
             || Substr(novocnpj, 13, 2);

    RETURN novocnpj;
END arruma_cnpj;

Um comentário: