Estou tentando fazer uma trigger conforme abaixo, mas ela nem compila, alguém tem noção de como eu poderia fazer essa trigger, conforme a regra dentro dela?
CREATE OR REPLACE TRIGGER CMJ_INTEGRA_NCM
AFTER INSERT OR UPDATE ON CODIGO_FISCAL
FOR EACH ROW
DECLARE
V_CODFISCAL VARCHAR2(10);
V_DESCRICAO VARCHAR2(200);
V_PERCIPI NUMBER(5);
V_CONTADOR1 NUMBER(14);
BEGIN
CASE
WHEN
SELECT TR.HANDLE FROM CORPORATIVO.TR_TIPIS TR WHERE REPLACE(TR.CODIGONBM,'.')=(:NEW.CODCLASFISCAL,' ')
IS NOT NULL THEN V_CONTADOR1=0
WHEN
SELECT TR.HANDLE FROM CORPORATIVO.TR_TIPIS TR WHERE REPLACE(TR.CODIGONBM,'.')=(:NEW.CODCLASFISCAL,' ')
IS NULL THEN V_CONTADOR1=1
END;
IF V_CONTADOR1 > 1 THEN
BEGIN
V_CODFISCAL := :NEW.CODCLASFISCAL;
V_DESCRICAO := :NEW.DESCRICAO;
V_PERCIPI := :NEW.PERCIPI;
END;
BEGIN
V500_PRC_INT_NCM_F1 (V_CODFISCAL, V_DESCRICAO, V_PERCIPI);
END;
END IF;
END;
é , o case tem que estar em um select não funciona assim.
tenta transformar num select count
CREATE OR REPLACE TRIGGER CMJ_INTEGRA_NCM
AFTER INSERT OR UPDATE ON CODIGO_FISCAL
Referencing New As New Old As Old For Each Row
DECLARE
V_CODFISCAL VARCHAR2(10);
V_DESCRICAO VARCHAR2(200);
V_PERCIPI NUMBER(5);
V_CONTADOR1 NUMBER(14);
BEGIN
select count(1) into V_CONTADOR1
from CORPORATIVO.TR_TIPIS TR
WHERE REPLACE(TR.CODIGONBM,'.')=(:NEW.CODCLASFISCAL,' ');
--
IF V_CONTADOR1 >= 1 THEN
V_CODFISCAL := :NEW.CODCLASFISCAL;
V_DESCRICAO := :NEW.DESCRICAO;
V_PERCIPI := :NEW.PERCIPI;
V500_PRC_INT_NCM_F1 (V_CODFISCAL, V_DESCRICAO, V_PERCIPI);
END IF;
END;
/