CREATE OR REPLACE TRIGGER LOG_VND_CCUSCLIE AFTER INSERT OR UPDATE OR DELETE ON CCUSCLIE FOR EACH ROW 
DECLARE 
    V_DSREMOTEADDR VARCHAR2(15); 
    V_DSREMOTEHOST VARCHAR2(15); 
    V_DSSERVERRDM  VARCHAR2(20); 
    V_DSSERVMETHOD VARCHAR2(30); 
    V_DSREMOTEOPER VARCHAR2(12); 
    V_DESC         VARCHAR2(4000); 
    V_ITPESQ       VARCHAR2(40); 
    V_NMOPERADOR   VARCHAR2(40); 
    V_IDTIPOOPER   VARCHAR2(1); 
BEGIN 
    /* IDTIPOOPER - '1' - Inclusao, '2' - Alteracao, '3' - Exclusao*/ 
    V_DESC       := ''; 
    V_ITPESQ     :=  ''; 
    V_NMOPERADOR := '';  
    V_IDTIPOOPER := ''; 
    NMUSUARIO(V_NMOPERADOR); 
    WEBTUNNING(V_DSREMOTEADDR, 
               V_DSREMOTEHOST, 
               V_DSSERVERRDM, 
               V_DSSERVMETHOD, 
               V_DSREMOTEOPER); 
    IF UPDATING THEN
        IF NVL(:NEW.CDCLIENTE, 'NULL') <> NVL(:OLD.CDCLIENTE, 'NULL') THEN
             V_DESC := NVL(V_DESC, '') || ' ' || 'CDCLIENTE ' || ' ' || NVL(:NEW.CDCLIENTE, '');
        END IF; 
        IF NVL(:NEW.CDCCUSCLIE, 'NULL') <> NVL(:OLD.CDCCUSCLIE, 'NULL') THEN
             V_DESC := NVL(V_DESC, '') || ' ' || 'CDCCUSCLIE ' || ' ' || NVL(:NEW.CDCCUSCLIE, '');
        END IF; 
        IF NVL(:NEW.NMCCUSCLIE, 'NULL') <> NVL(:OLD.NMCCUSCLIE, 'NULL') THEN
             V_DESC := NVL(V_DESC, '') || ' ' || 'NMCCUSCLIE ' || ' ' || NVL(:NEW.NMCCUSCLIE, '');
        END IF; 
        IF NVL(:NEW.DTULTATUCUSC, TO_DATE('01/01/0001', 'DD/MM/YYYY')) <> NVL(:OLD.DTULTATUCUSC, TO_DATE('01/01/0001', 'DD/MM/YYYY')) THEN
             V_DESC := NVL(V_DESC, '') || ' ' || 'DTULTATUCUSC ' || ' ' || NVL(:NEW.DTULTATUCUSC, '');
        END IF; 
        IF NVL(:NEW.NRORG, 99999) <> NVL(:OLD.NRORG, 99999) THEN
             V_DESC := NVL(V_DESC, '') || ' ' || 'NRORG ' || ' ' || NVL(:NEW.NRORG, '');
        END IF; 
        IF NVL(:NEW.DTINCLUSAO, TO_DATE('01/01/0001', 'DD/MM/YYYY')) <> NVL(:OLD.DTINCLUSAO, TO_DATE('01/01/0001', 'DD/MM/YYYY')) THEN
             V_DESC := NVL(V_DESC, '') || ' ' || 'DTINCLUSAO ' || ' ' || NVL(:NEW.DTINCLUSAO, '');
        END IF; 
        IF NVL(:NEW.DTULTATU, TO_DATE('01/01/0001', 'DD/MM/YYYY')) <> NVL(:OLD.DTULTATU, TO_DATE('01/01/0001', 'DD/MM/YYYY')) THEN
             V_DESC := NVL(V_DESC, '') || ' ' || 'DTULTATU ' || ' ' || NVL(:NEW.DTULTATU, '');
        END IF; 
        IF NVL(:NEW.NRORGINCLUSAO, 99999) <> NVL(:OLD.NRORGINCLUSAO, 99999) THEN
             V_DESC := NVL(V_DESC, '') || ' ' || 'NRORGINCLUSAO ' || ' ' || NVL(:NEW.NRORGINCLUSAO, '');
        END IF; 
        IF NVL(:NEW.CDOPERINCLUSAO, 'NULL') <> NVL(:OLD.CDOPERINCLUSAO, 'NULL') THEN
             V_DESC := NVL(V_DESC, '') || ' ' || 'CDOPERINCLUSAO ' || ' ' || NVL(:NEW.CDOPERINCLUSAO, '');
        END IF; 
        IF NVL(:NEW.NRORGULTATU, 99999) <> NVL(:OLD.NRORGULTATU, 99999) THEN
             V_DESC := NVL(V_DESC, '') || ' ' || 'NRORGULTATU ' || ' ' || NVL(:NEW.NRORGULTATU, '');
        END IF; 
        IF NVL(:NEW.CDOPERULTATU, 'NULL') <> NVL(:OLD.CDOPERULTATU, 'NULL') THEN
             V_DESC := NVL(V_DESC, '') || ' ' || 'CDOPERULTATU ' || ' ' || NVL(:NEW.CDOPERULTATU, '');
        END IF; 
        IF NVL(:NEW.IDATIVO, 'NULL') <> NVL(:OLD.IDATIVO, 'NULL') THEN
             V_DESC := NVL(V_DESC, '') || ' ' || 'IDATIVO ' || ' ' || NVL(:NEW.IDATIVO, '');
        END IF; 
        V_ITPESQ := :NEW.CDCLIENTE||:NEW.CDCCUSCLIE;
       V_IDTIPOOPER := '2'; 
    END IF;
    IF INSERTING THEN
        IF :NEW.CDCLIENTE IS NOT NULL THEN
            V_DESC := NVL(V_DESC, '') || ' ' || 'CDCLIENTE ' || ' ' || NVL(:NEW.CDCLIENTE, ''); 
        END IF;
        IF :NEW.CDCCUSCLIE IS NOT NULL THEN
            V_DESC := NVL(V_DESC, '') || ' ' || 'CDCCUSCLIE ' || ' ' || NVL(:NEW.CDCCUSCLIE, ''); 
        END IF;
        IF :NEW.NMCCUSCLIE IS NOT NULL THEN
            V_DESC := NVL(V_DESC, '') || ' ' || 'NMCCUSCLIE ' || ' ' || NVL(:NEW.NMCCUSCLIE, ''); 
        END IF;
        IF :NEW.DTULTATUCUSC IS NOT NULL THEN
            V_DESC := NVL(V_DESC, '') || ' ' || 'DTULTATUCUSC ' || ' ' || NVL(:NEW.DTULTATUCUSC, ''); 
        END IF;
        IF :NEW.NRORG IS NOT NULL THEN
            V_DESC := NVL(V_DESC, '') || ' ' || 'NRORG ' || ' ' || NVL(:NEW.NRORG, ''); 
        END IF;
        IF :NEW.DTINCLUSAO IS NOT NULL THEN
            V_DESC := NVL(V_DESC, '') || ' ' || 'DTINCLUSAO ' || ' ' || NVL(:NEW.DTINCLUSAO, ''); 
        END IF;
        IF :NEW.DTULTATU IS NOT NULL THEN
            V_DESC := NVL(V_DESC, '') || ' ' || 'DTULTATU ' || ' ' || NVL(:NEW.DTULTATU, ''); 
        END IF;
        IF :NEW.NRORGINCLUSAO IS NOT NULL THEN
            V_DESC := NVL(V_DESC, '') || ' ' || 'NRORGINCLUSAO ' || ' ' || NVL(:NEW.NRORGINCLUSAO, ''); 
        END IF;
        IF :NEW.CDOPERINCLUSAO IS NOT NULL THEN
            V_DESC := NVL(V_DESC, '') || ' ' || 'CDOPERINCLUSAO ' || ' ' || NVL(:NEW.CDOPERINCLUSAO, ''); 
        END IF;
        IF :NEW.NRORGULTATU IS NOT NULL THEN
            V_DESC := NVL(V_DESC, '') || ' ' || 'NRORGULTATU ' || ' ' || NVL(:NEW.NRORGULTATU, ''); 
        END IF;
        IF :NEW.CDOPERULTATU IS NOT NULL THEN
            V_DESC := NVL(V_DESC, '') || ' ' || 'CDOPERULTATU ' || ' ' || NVL(:NEW.CDOPERULTATU, ''); 
        END IF;
        IF :NEW.IDATIVO IS NOT NULL THEN
            V_DESC := NVL(V_DESC, '') || ' ' || 'IDATIVO ' || ' ' || NVL(:NEW.IDATIVO, ''); 
        END IF;
        V_ITPESQ := :NEW.CDCLIENTE||:NEW.CDCCUSCLIE;
       V_IDTIPOOPER := '1'; 
    END IF;
    IF DELETING THEN
        V_ITPESQ := :OLD.CDCLIENTE||:OLD.CDCCUSCLIE;
       V_IDTIPOOPER := '3'; 
    END IF;

   V_DESC := SUBSTR(V_DESC, 1, 4000); 
    INSERT INTO LOGOPERAVND 
       (NMTABELAVND, 
        DTOPERACAOVND, 
        NMRESPOPERVND, 
        IDTIPOOPERVND, 
        DSOPERACAOVND, 
        CDPESQITEMVND, 
        DSRDMUSUOPERVND, 
        DSENDUSUOPERVND, 
        DSNMUSUOPERVND, 
        DSMETUSUOPERVND, 
        CDORESPOPERVND, 
        CDFILLOGOPERVND) 
    VALUES 
       ('CCUSCLIE', 
        SYSDATE, 
        NVL(V_NMOPERADOR,' '), 
        V_IDTIPOOPER, 
        NVL(V_DESC,' '), 
        V_ITPESQ, 
        V_DSSERVERRDM, 
        V_DSREMOTEADDR, 
        V_DSREMOTEHOST, 
        V_DSSERVMETHOD, 
        V_DSREMOTEOPER, 
        '');
END; 

/