Você está na página 1de 2

DECLARE

ICOUNT NUMBER;
V_PRODUTO NUMBER ;
CURSOR CORRECAO_PROD IS
SELECT EMPRESA_ID,
PRODUTO_ID,
CST,
GRUPO_PISCOFINS_ATUAL,
NEW_GRUPO_PISCOFINS,
ALTERACAO_GRUPO
FROM (SELECT PRODUTO_ID,
CST,
GRUPO_PISCOFINS_ATUAL,
NEW_GRUPO_PISCOFINS,
EMPRESA_ID,
CASE
WHEN GRUPO_PISCOFINS_ATUAL = NEW_GRUPO_PISCOFINS THEN
GRUPO_PISCOFINS_ATUAL
ELSE
NEW_GRUPO_PISCOFINS
END ALTERACAO_GRUPO
FROM (SELECT P.PRODUTO_ID,
E.EMPRESA_ID,
CODIGO_BARRA,
CODIGO,
N.GRUPO_PISCOFINS_ID AS GRUPO_PISCOFINS_ATUAL,
C.CST,
DECODE(C.CST,
NULL,
1,
49,
1,
'01',
1,
'04',
'2',
'05',
'1',
'06',
'3') NEW_GRUPO_PISCOFINS
FROM PRODUTOS P,
PRODUTOS_EMPRESAS E,
NEW_GRUPO_PISCOFINS N,
EMPRESAS EM,
CENTER_PLANILHA C

WHERE P.PRODUTO_ID = E.PRODUTO_ID


AND E.NEW_GRUPO_PIS_COFINS_ID = N.GRUPO_PISCOFINS_ID
AND E.EMPRESA_ID = '12.717.743/0001-66'
AND E.EMPRESA_ID = EM.EMPRESA_ID
AND C.CODIGO = P.CODIGO_BARRA))

WHERE ALTERACAO_GRUPO <> GRUPO_PISCOFINS_ATUAL;

BEGIN
FOR C IN CORRECAO_PROD LOOP
ICOUNT := 0;
V_PRODUTO := C.PRODUTO_ID ;
UPDATE PRODUTOS_EMPRESAS I
SET I.NEW_GRUPO_PIS_COFINS_ID = C.ALTERACAO_GRUPO
WHERE I.EMPRESA_ID = C.EMPRESA_ID
AND I.PRODUTO_ID = C.PRODUTO_ID;
ICOUNT := ICOUNT + 1;
IF ICOUNT = 300 THEN
ICOUNT := 0;
COMMIT;
END IF;
DBMS_OUTPUT.put_line('LINHAS ALTERADAS: ' || TO_CHAR(V_PRODUTO));

COMMIT;
END LOOP;
END;

Você também pode gostar