A Receita Federal Brasileira, irá homologar neste ano de 2026, a alteração do formato do CNPJ numérico para o CNPJ alfanumérico.
Hoje, exploraremos um pouco o casamento das funções ALTER TABLE e UPDATE,
visando a alteração de uma coluna CNPJ do tipo number(14,0) para o tipo varchar2(14).
Vamos imaginar que nossa tabela possui 1.000 registros de CNPJs (numéricos). A estrutura atual da tabela é esta:
CREATE TABLE TB_EMPRESA (
ID NUMBER NOT NULL,
CNPJ NUMBER(14,0) NOT NULL,
RZ_SOCIAL VARCHAR2(200) NOT NULL,
NOME_EMPRESA VARCHAR2(200) NOT NULL,
DATA_CRIACAO DATE DEFAULT SYSDATE,
CONSTRAINT PK_TB_EMPRESA PRIMARY KEY (ID)
);
No cenário atual, a máscara da aplicação só aceita números, exemplo: '00"."000"."000"/"0000"-"00'.
Passo 1: criando uma nova coluna
CNPJ_NOVO VARCHAR2(14)
ALTER TABLE TB_EMPRESA ADD CNPJ_NOVO VARCHAR2(14);
Passo 2: realizar o update de todos os 1.000 registros para a nova tabela, garantindo o seu tamanho total, utilizando a função
LPADpara preencher com zeros à esquerda a coluna CNPJ_NOVO, com os da coluna CNPJ (antigos) menores que 14 dígitos.
UPDATE TB_EMPRESA SET CNPJ_NOVO = LPAD(CNPJ, 14, '0');
COMMIT;
Passo 3: conferir os dados
SELECT CNPJ, CNPJ_NOVO FROM TB_EMPRESA;
Passo 4: se tudo ok, deletar a coluna antiga e renomear a nova com as características anteriores
-- 1. Remove a coluna antiga (e suas constraints/índices)
ALTER TABLE TB_EMPRESA DROP COLUMN CNPJ CASCADE CONSTRAINTS;
-- 2. Renomeia a coluna nova para o nome original
ALTER TABLE TB_EMPRESA RENAME COLUMN CNPJ_NOVO TO CNPJ;
-- 3. Adiciona a constraint de NOT NULL
ALTER TABLE TB_EMPRESA MODIFY CNPJ NOT NULL;
Passo 5: conferir seus registros na tabela e nova estrutura será esta
CREATE TABLE TB_EMPRESA (
ID NUMBER NOT NULL,
RZ_SOCIAL VARCHAR2(200) NOT NULL,
NOME_EMPRESA VARCHAR2(200) NOT NULL,
DATA_CRIACAO DATE DEFAULT SYSDATE,
-- no Oracle, a nova coluna muda de posição
CNPJ VARCHAR2(14) NOT NULL,
CONSTRAINT PK_TB_EMPRESA PRIMARY KEY (ID)
);
Neste novo cenário, a máscara da aplicação aceita números e letras, exemplo: 'XX"."XXX"."XXX"/"XXXX"-"XX'.
A ideia deste artigo foi mostrar de maneira prática e scripts simples que é possível realizar essa mudança sem muitos problemas.
Porém, ressalvo que o Desenvolvedor deve conhecer bem sua base de dados e o quanto sua aplicação é sensível para este tipo de alteração.
Até a próxima!
Fillipi | Programador
Top comments (0)