› Fóruns › SQL e PL/SQL › Trigger Só Executa Primeiro Bloco do Programa › Trigger Só Executa Primeiro Bloco do Programa
Olá fsitja e Amigos do Fórum
Bom Dia à Todos..!! 8)
Estou tentando fazer conforme passado aqui no fórum, criando 1 package e 3 triggers.
Só que não estou conseguindo fazer rodar e ainda por cima a tabela (PCWMSOUTPUT) fica locada.
Alguém poderia dar uma olhada e verificar onde continuo errando.
Desde já muito obrigado..!!
Package:
CREATE OR REPLACE PACKAGE pack_estado_tab_1 IS
type t_nt_tabela_1 is table of PCWMSOUTPUT%rowtype;
nt_tab_1 t_nt_tabela_1 := t_nt_tabela_1(null);
END;
Trigger_1:
CREATE OR REPLACE TRIGGER T_PRIMEIRA
AFTER INSERT ON PCWMSOUTPUT FOR EACH ROW
DECLARE
v_rec_tab_1 PCWMSOUTPUT%rowtype;
BEGIN
pack_estado_tab_1.nt_tab_1.extend;
v_rec_tab_1.tipo := :new.tipo;
v_rec_tab_1.numero := :new.numero;
v_rec_tab_1.codprod := :new.codprod;
v_rec_tab_1.codcli := :new.codcli;
v_rec_tab_1.codfornec := :new.codfornec;
v_rec_tab_1.codfilial := :new.codfilial;
v_rec_tab_1.qtsep := :new.qtsep;
v_rec_tab_1.qtrec := :new.qtrec;
v_rec_tab_1.qtava := :new.qtava;
v_rec_tab_1.qtcor := :new.qtcor;
v_rec_tab_1.dtemissao := :new.dtemissao;
v_rec_tab_1.semaforo := 3;
v_rec_tab_1.dtprocessamento := :new.dtprocessamento;
v_rec_tab_1.numlote := :new.numlote;
v_rec_tab_1.dtfabricacao := :new.dtfabricacao;
pack_estado_tab_1.nt_tab_1(pack_estado_tab_1.nt_tab_1.last) := v_rec_tab_1;
END;
Trigger_2:
CREATE OR REPLACE TRIGGER T_SEGUNDA
AFTER INSERT ON PCWMSOUTPUT
BEGIN
pack_estado_tab_1.nt_tab_1.delete;
END;
Trigger_3:
CREATE OR REPLACE TRIGGER T_TERCEIRA
AFTER INSERT ON PCWMSOUTPUT
BEGIN
FOR i IN 1 .. pack_estado_tab_1.nt_tab_1.count
LOOP
INSERT INTO "sh_pcwmsoutput"@logixteste
VALUES ( pack_estado_tab_1.nt_tab_1(i).tipo, pack_estado_tab_1.nt_tab_1(i).numero,
pack_estado_tab_1.nt_tab_1(i).codprod, pack_estado_tab_1.nt_tab_1(i).codcli,
pack_estado_tab_1.nt_tab_1(i).codfornec, pack_estado_tab_1.nt_tab_1(i).codfilial,
pack_estado_tab_1.nt_tab_1(i).qtsep, pack_estado_tab_1.nt_tab_1(i).qtrec,
pack_estado_tab_1.nt_tab_1(i).qtava, pack_estado_tab_1.nt_tab_1(i).qtcor,
pack_estado_tab_1.nt_tab_1(i).dtemissao, pack_estado_tab_1.nt_tab_1(i).semaforo,
pack_estado_tab_1.nt_tab_1(i).dtprocessamento, pack_estado_tab_1.nt_tab_1(i).numlote,
pack_estado_tab_1.nt_tab_1(i).dtfabricacao, 0);
UPDATE PCWMSOUTPUT
SET SEMAFORO = 3
WHERE numero = pack_estado_tab_1.nt_tab_1(i).numero;
END LOOP;
END;