Como Validar Telefone

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
mariogus
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 157
Registrado em: Sex, 30 Nov 2007 1:17 pm
Localização: Porto Alegre - RS

Pessoal,

Preciso validar o telefone - sendo que podem existir mais de um e possivelmente tenham sido cadastrados com erro..existe uma maneira de apenas trazer o correto - sem ddd

Selecionar tudo

FUNCTION busca_telefone(pi_cd_pessoa IN corp.pessoas.cd_pessoa%TYPE)  RETURN VARCHAR2 IS
     ---
     v_telefone varchar2(20);
  BEGIN

     BEGIN
         SELECT trim(nr_ddi)||trim(nr_ddd)||trim(nr_telefone) 
         INTO v_telefone
           FROM corp.pessoa_telefones
         WHERE cd_pessoa = pi_cd_pessoa
         AND ROWNUM = 1;         
diegolenhardt
Moderador
Moderador
Mensagens: 1177
Registrado em: Qui, 15 Out 2009 10:28 am
Localização: Recife

com o pacote REGEXP_SUBSTR resolveria este problema, ele serve para utilizar expressões regulares,

é a solução mais elegante para estes problemas, na minha opinião,

inclusive existem vários tópicos sobre isso, varios exemplos do uso de expressoes regulares,

http://stanford.edu/dept/itss/docs/orac ... fns_re.htm

http://download.oracle.com/docs/cd/B283 ... regexp.htm
RodrigoValentim
Moderador
Moderador
Mensagens: 367
Registrado em: Ter, 25 Mar 2008 3:41 pm
Localização: Salvador - BA
Rodrigo Valentim
Analista de Sistemas
Oracle Developer

Campanha: Faça uma pesquisa antes de perguntar!!!

Meio "impossível" você validar um telefone correto.. a não ser que você tenha acesso a base de dados da anatel.

O que você pode fazer é definir algumas regras

Tamanho do telefone (sem ddd)
Valores iniciados tem que ser diferente de 0, 1 e não pode conter números (geralmente o pessoal bota telefone como varchar2 ou invés de inteiro com preguiça de fazer uma função para mascarar a exibição do usuário da forma padrão (dd) 0000 - 0000

Sera uma tarefa complicada... aqui mesmo temos um cadastro gigantesco de pessoas.. os telefones cadastrados tem até / para informar mais de um.

Porém, caso você queira uma consutla simples que lhe traga números validos, tente usar expressão regular link --> http://glufke.net/oracle/viewtopic.php?t=5894
Responder
  • Informação