Manual de Execução em Produção
Este guia reúne as instruções e os scripts necessários para a reclassificação de produtos no banco de dados Oracle do cliente. O script completo e os passos individuais já contam com os dados atuais da base de dados e podem ser copiados facilmente.
Etapa 1: Configuração e Carga de Dados no Cliente
Instruções para configurar a tabela temporária e carregar as novas classificações diretamente na base Oracle antes de criar a view.
Criação da Tabela MYP7_DADOS_RECLASSIFICACAO no Oracle do cliente
Antes de criar a view e realizar a reclassificação de fato, você precisa criar a tabela que armazenará os dados importados no banco do cliente.
DECLARE
tbl_exists NUMBER;
BEGIN
-- Verifica se a tabela já existe no schema atual do Oracle
SELECT COUNT(*) INTO tbl_exists FROM user_tables WHERE table_name = 'MYP7_DADOS_RECLASSIFICACAO';
IF tbl_exists = 0 THEN
-- Cria a tabela com tipos de dados correspondentes no Oracle
EXECUTE IMMEDIATE 'CREATE TABLE MYP7_DADOS_RECLASSIFICACAO (
id NUMBER(10) GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
seqfamilia NUMBER(10) NOT NULL,
nroempresa NUMBER(10),
seqsegmento NUMBER(10) NOT NULL,
segmento VARCHAR2(255) NOT NULL,
descricao VARCHAR2(4000) NOT NULL,
classif_nova VARCHAR2(255) NOT NULL,
dtahorinclusao DATE DEFAULT SYSDATE
)';
-- Cria os índices otimizados para busca no Oracle
EXECUTE IMMEDIATE 'CREATE INDEX idx_ora_seqfamilia ON MYP7_DADOS_RECLASSIFICACAO(seqfamilia)';
EXECUTE IMMEDIATE 'CREATE INDEX idx_ora_nroempresa ON MYP7_DADOS_RECLASSIFICACAO(nroempresa)';
EXECUTE IMMEDIATE 'CREATE INDEX idx_ora_seqsegmento ON MYP7_DADOS_RECLASSIFICACAO(seqsegmento)';
END IF;
END;
/
Inserção de dados na tabela criada (Sem necessidade de updates)
Insira os dados que foram importados e editados no sistema. O script abaixo foi gerado dinamicamente com os registros atuais salvos.
-- Nenhum registro de reclassificação encontrado cadastrado.
-- Por favor, faça a importação da planilha Excel na página inicial primeiro.
Etapa 2: Script de Execução e Validação (script_update.sql)
Abaixo estão os passos originais do script para criar a view e realizar os procedimentos de reclassificação.
Apos criar a tabela MYP7_DADOS_RECLASSIFICACAO com os dados importados (atraves do script gerado) cria uma view para ficar melhor colocado os dados:
--EXEMPLO
CREATE OR REPLACE VIEW VW_MYP7_DADOS_RECLASSIFICACAO AS
SELECT A.SEQFAMILIA,
A.DESCRICAO,
A.NROEMPRESA,
A.SEQSEGMENTO AS NROSEGMENTO,
UPPER(A.SEGMENTO) AS DESCSEGMENTO,
UPPER(A.CLASSIF_NOVA) AS CLASSIF_NOVA
FROM MYP7_DADOS_RECLASSIFICACAO A
WHERE A.CLASSIF_NOVA <> '0'
ORDER BY A.NROEMPRESA ASC,
A.SEQFAMILIA ASC,
A.SEQSEGMENTO ASC;
-- se já tiver a view e a tabela, limpe a tabela para fazer o novo procedimento.
delete from MYP7_DADOS_RECLASSIFICACAO;
Dica de Segurança: Este comando modifica dados. Recomenda-se realizar o backup sugerido no Passo 4 antes de executá-lo e certificar-se de efetuar o COMMIT após a validação.
Após criar a view verifica se esta em conformidade as informações com as que estão na MAD_FAMSEGMENTO
SELECT D.*
FROM VW_MYP7_DADOS_RECLASSIFICACAO A
JOIN MAD_SEGMENTO B
ON B.NROSEGMENTO = A.NROSEGMENTO
JOIN MAP_FAMILIA C
ON C.SEQFAMILIA = A.SEQFAMILIA
JOIN MAD_FAMSEGMENTO D
ON D.SEQFAMILIA = A.SEQFAMILIA
AND D.NROSEGMENTO = A.NROSEGMENTO
AND D.STATUS = 'A'
WHERE A.CLASSIF_NOVA <> D.CLASSIFCOMERCABC;
Nota: Este comando é uma consulta de validação e não altera registros no banco. Use-o para auditar as informações antes ou depois do processo.
verifica a quantidade antes da alteração
SELECT COUNT(*)
FROM VW_MYP7_DADOS_RECLASSIFICACAO A
JOIN MAD_FAMSEGMENTO D
ON D.SEQFAMILIA = A.SEQFAMILIA
AND D.NROSEGMENTO = A.NROSEGMENTO
AND D.STATUS = 'A'
WHERE A.CLASSIF_NOVA <> D.CLASSIFCOMERCABC;
Nota: Este comando é uma consulta de validação e não altera registros no banco. Use-o para auditar as informações antes ou depois do processo.
faça um bkp do que vai ser alterado para caso precise voltar o que era antes, coloque no final a data atual BKP_MAD_FAMSEGMENTO_20260710
CREATE TABLE BKP_MAD_FAMSEGMENTO_20260710 AS
SELECT D.*
FROM VW_MYP7_DADOS_RECLASSIFICACAO A
JOIN MAD_FAMSEGMENTO D
ON D.SEQFAMILIA = A.SEQFAMILIA
AND D.NROSEGMENTO = A.NROSEGMENTO
WHERE A.CLASSIF_NOVA <> D.CLASSIFCOMERCABC;
Nota: Este comando é uma consulta de validação e não altera registros no banco. Use-o para auditar as informações antes ou depois do processo.
Fazendo update apenas de algumas familia para o cliente validar
UPDATE MAD_FAMSEGMENTO D
SET D.CLASSIFCOMERCABC =
(SELECT A.CLASSIF_NOVA
FROM VW_MYP7_DADOS_RECLASSIFICACAO A
WHERE A.SEQFAMILIA = D.SEQFAMILIA
AND A.NROSEGMENTO = D.NROSEGMENTO)
WHERE D.SEQFAMILIA IN () -- famílias para teste
AND EXISTS (
SELECT 1
FROM VW_MYP7_DADOS_RECLASSIFICACAO A
WHERE A.SEQFAMILIA = D.SEQFAMILIA
AND A.NROSEGMENTO = D.NROSEGMENTO
AND A.CLASSIF_NOVA <> D.CLASSIFCOMERCABC
AND EXISTS (
SELECT 1
FROM MAP_CLASSIFABC M
WHERE M.NROSEGMENTO = A.NROSEGMENTO
AND M.CLASSIFCOMERCABC = A.CLASSIF_NOVA
)
);
Dica de Segurança: Este comando modifica dados. Recomenda-se realizar o backup sugerido no Passo 4 antes de executá-lo e certificar-se de efetuar o COMMIT após a validação.
Fazer update em massa de todos
UPDATE MAD_FAMSEGMENTO D
SET D.CLASSIFCOMERCABC =
(SELECT A.CLASSIF_NOVA
FROM VW_MYP7_DADOS_RECLASSIFICACAO A
WHERE A.SEQFAMILIA = D.SEQFAMILIA
AND A.NROSEGMENTO = D.NROSEGMENTO)
WHERE EXISTS (
SELECT 1
FROM VW_MYP7_DADOS_RECLASSIFICACAO A
WHERE A.SEQFAMILIA = D.SEQFAMILIA
AND A.NROSEGMENTO = D.NROSEGMENTO
AND A.CLASSIF_NOVA <> D.CLASSIFCOMERCABC
AND EXISTS (
SELECT 1
FROM MAP_CLASSIFABC M
WHERE M.NROSEGMENTO = A.NROSEGMENTO
AND M.CLASSIFCOMERCABC = A.CLASSIF_NOVA
)
);
Dica de Segurança: Este comando modifica dados. Recomenda-se realizar o backup sugerido no Passo 4 antes de executá-lo e certificar-se de efetuar o COMMIT após a validação.
Verificar novamente a quantidade, no caso tem que estar zerado
SELECT COUNT(*)
FROM VW_MYP7_DADOS_RECLASSIFICACAO A
JOIN MAD_FAMSEGMENTO D
ON D.SEQFAMILIA = A.SEQFAMILIA
AND D.NROSEGMENTO = A.NROSEGMENTO
AND D.STATUS = 'A'
WHERE A.CLASSIF_NOVA <> D.CLASSIFCOMERCABC;
Nota: Este comando é uma consulta de validação e não altera registros no banco. Use-o para auditar as informações antes ou depois do processo.