Boa Noite, tenho que solucionar um exercício de PL/SQL ,onde devo encontrar um algorítimo/código para poder analisar um CNPJ ,que sera informado pelo usuário,o SQL Developer deve realizar o cálculo para pegar os dígitos validadores desse CNPJ, e por fim analisar se ele é válido ou inválido e no console apresentar o texto : Valido ou inválido dependendo do resultado obtido com o calculo!
Nesse exercício sera aberta uma "tela" que vai pedir pro usuário digitar o numero do CNPJ,esse CNPJ sera capturado e analisado através de um calculo de validação de CNPJ (ira analisar os dígitos verificadores) e com o resultado ele ira informar ao usuário se o numero é VALIDO ou INVALIDO!
Enunciado :
CRIE UM BLOCO ANÔNIMO PL/SQL ORACLE QUE IRÁ SOLICITAR PARA O USUÁRIO O NÚMERO DO: CNPJ - BLOCO ANÔNIMO-DÍGITO VERIFICADOREu rodei o código abaixo o SQL informou que a função foi compilada,porém não aparece a mensagem dizendo se o numero informado é válido ou inválido...Será que poderiam me ajudar ?
set serveroutput on
ACCEPT CNPJ PROMPT 'Digite o numero do CNPJ'
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;
IF CNPJ(14) = TRUE
THEN
DBMS_OUTPUT.PUT_LINE('VERDADEIRO');
ELSE
DBMS_OUTPUT.PUT_LINE('FALSO');
END IF;
END;
/