Instruções para Reclassificação

Manual passo a passo para a execução segura da reclassificação de produtos no cliente.

Voltar ao Início

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.

Script atualizado em: 15/06/2026 17:32:58

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.

A

Criação da Tabela MYP7_DADOS_RECLASSIFICACAO no Oracle do cliente

Preparatório

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;
/
B

Inserção de dados na tabela criada (Sem necessidade de updates)

Preparatório

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.

1

Apos criar a tabela MYP7_DADOS_RECLASSIFICACAO com os dados importados (atraves do script gerado) cria uma view para ficar melhor colocado os dados:

Ação Modificadora
--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.

2

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.

3

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.

4

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.

5

Fazendo update apenas de algumas familia para o cliente validar

Ação Modificadora
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.

6

Fazer update em massa de todos

Ação Modificadora
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.

7

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.