
se alguém tiver
disponibiliza aee!!
por favor
abraços
CREATE OR REPLACE FUNCTION CNPJ
(p_cgc IN CHAR)
RETURN BOOLEAN
IS
m_total NUMBER := 0;
m_digito NUMBER := 0;
BEGIN
FOR i IN 1..4 LOOP
m_total := m_total + substr(p_cgc,i,1) * (6 - i);
END LOOP;
FOR i IN 5..12 LOOP
m_total := m_total + substr(p_cgc,i,1) * (14 - i);
END LOOP;
m_digito := 11 - mod(m_total,11);
IF m_digito > 9 THEN
m_digito := 0;
END IF;
IF m_digito != substr(p_cgc,13,1) THEN
RETURN FALSE;
END IF;
m_digito := 0;
m_total := 0;
FOR i IN 1..5 LOOP
m_total := m_total + substr(p_cgc,i,1) * (7 - i);
END LOOP;
FOR i IN 6..13 LOOP
m_total := m_total + substr(p_cgc,i,1) * (15 - i);
END LOOP;
m_digito := 11 - mod(m_total,11);
IF m_digito > 9 THEN
m_digito := 0;
END IF;
IF m_digito != substr(p_cgc,14,1) THEN
RETURN FALSE;
END IF;
RETURN TRUE;
end;
CREATE OR REPLACE FUNCTION CPF
(p_cpf IN CHAR)
RETURN BOOLEAN
IS
m_total NUMBER := 0;
m_digito NUMBER := 0;
BEGIN
FOR i IN 1..9 LOOP
m_total := m_total + substr(p_cpf,i,1) * (11 - i);
END LOOP;
m_digito := 11 - mod(m_total,11);
IF m_digito > 9 THEN
m_digito := 0;
END IF;
IF m_digito != substr(p_cpf,10,1) THEN
RETURN FALSE;
END IF;
m_digito := 0;
m_total := 0;
FOR i IN 1..10 LOOP
m_total := m_total + substr(p_cpf,i,1) * (12 - i);
END LOOP;
m_digito := 11 - mod(m_total,11);
IF m_digito > 9 THEN
m_digito := 0;
END IF;
IF m_digito != substr(p_cpf,11,1) THEN
RETURN FALSE;
END IF;
RETURN TRUE;
end;
if not cpf(:participantes.cic_participante) then
message('CPF invalido');
message(' ');
raise form_trigger_failure;
end if;
if not cpf(:TPESAGEM.CPF_MOTORISTA) then
message('CPF invalido');
message(' ');
raise form_trigger_failure;
else
message('CPF válido');
message(' ');
end if;
Edson,Tenho contado com a ajuda de voces e principalmente de nosso amigo Francisco Angelo. tenho o campo cpf gravdo em meu banco definido como Number(11). Coloquei a mascara conforme informado acima. Assim que compilo e digito o cpf, ele dá ok, navego entre os registros e tudo certinho mas, se eu sair do programa e voltar novamente, eele não mostra os cpfs gravados. Lá no banco ele está gravado assim: 8,8889E+10 Oque está acontecendo? como é que eu corrijo isso?
col <coluna> format 99999999999999
select <coluna> from <tabela> where ...
Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes