Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoa estou com um problema. Tenho um caso de controle de cinemas. Nele tenho as tabelas DIRETOR (cod_diretor,nome, Media_avaliacao, tot_filmes). Na outra tenho as DIRECOES(1..N) (cod_diretor,cod_filme,avaliacao).
Criei uma package direcoes que faz os procedimentos para a multating table.
Abaixo as triggers:
-- BEFORE STATEMENT
create or replace trigger direcoes_biuds
before insert or update or delete
on direcoes
declare
-- local variables here
begin
direcoes_pkg.limpar;
dbms_output.put_line('BIUDS - Vetor inicializado');
end;
-- AFTER INSERT UPDATE DELETE ROW
create or replace trigger direcoes_aiudr
after insert or update or delete
on direcoes
for each row
declare
-- local variables here
begin
if (inserting or updating) then-- alimentar vetor
dbms_output.put_line('AIUDR - Alimentando vetor' ||:new.cod_diretor|| ' '||:new.avaliacao );
direcoes_pkg.inserir(:new.cod_diretor, :new.avaliacao);
elsif(deleting) then
if (:old.cod_diretor = :new.cod_diretor) and
(:old.avaliacao = :new.avaliacao) then
direcoes_pkg.inserir(:new.cod_diretor, :new.avaliacao);
end if;
end if;
end;
-- AFTER INSERT UPDATE DELETE STATEMENT
create or replace trigger direcoes_aiuds
after insert or update or delete
on direcoes
declare
-- local variables here
v_cd_diretor diretores.cod_diretor%type;
v_aval diretores.media%type;
v_tot_fil diretores.tot_filmes%type;
i binary_integer;
begin
i := 0;
direcoes_pkg.obter_dados(i,v_cd_diretor,v_aval,v_tot_fil);
dbms_output.put_line('AIUDS - Obtencao de dados ' || v_cd_diretor || ' '||v_aval ||'' || v_tot_fil);
while v_cd_diretor is not null loop
update DIRETORES
set TOT_FILMES = v_tot_fil, MEDIA = v_aval
where COD_DIRETOR = v_cd_diretor;
i := i + 1;
direcoes_pkg.obter_dados(i,v_cd_diretor,v_aval,v_tot_fil);
dbms_output.put_line('AIUDS - Atualizou dados ' || v_cd_diretor || ' '||v_aval ||'' || v_tot_fil);
end loop;
exception
when no_data_found then
dbms_output.put_line('AIUDS - Dados nao encontrado');
end;
Os procedimentos das packages estão OK. O problema esta que nao atualiza os valores na tabela DIRETORES
Obrigado.
Carregando comentários...