Ir para conteúdo
Fórum Script Brasil

Orlando cawende

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre Orlando cawende

Orlando cawende's Achievements

0

Reputação

  1. CREATE OR REPLACE TRIGGER T_GERA_ENDERECO_AFTER AFTER INSERT ON pessoa DECLARE -- cria o tipo para variável que armazena o conteúdo do package TYPE tbPessoaPackage IS TABLE OF pessoa%ROWTYPE INDEX BY BINARY_INTEGER; tbPessoa tbPessoaPackage; x BINARY_INTEGER; --indice BEGIN -- atribui ao índice o primeiro valor do package x := pkg_pessoa.vPessoa.FIRST; -- limpa a var criada tbPessoa.DELETE; -- adiciona todos os registros do package na variável criada WHILE x IS NOT NULL LOOP tbPessoa(x).id_pessoa := pkg_pessoa.vPessoa(x).id_pessoa; tbPessoa(x).nome_pessoa := pkg_pessoa.vPessoa.nome_pessoa; tbPessoa(x).id_endereco := pkg_pessoa.vPessoa.id_endereco; x := pkg_pessoa.vPessoa.NEXT(x); -- incrementa o valor do índice END LOOP; pkg_pessoa.vPessoa.DELETE; -- limpa o package x := tbPessoa.FIRST; -- atribui ao índice o primeiro valor -- loop para percorrer todos os registros do package WHILE x IS NOT NULL LOOP -- insert na tabela endereco, com o nome da rua sendo Rua + nome da pessoa (ex: Rua do Felisberto) BEGIN INSERT INTO endereco (id_endereco,lograddouro) values (seq_endereco.nextval, 'Rua do ' || tbPessoa(x).nome_pessoa); EXCEPTION WHEN OTHERS THEN RAISE_APPLICATION_ERROR(-20001 ,'Não foi possível inserir os dados na tabela ENDERECO. Trigger: T_GERA_ENDERECO_AFTER ' || SQLERRM); END; -- update na tabela Pessoa, para setar o valor do id_endereco da Pessoa com o valor do id do endereço gerado no insert acima BEGIN UPDATE pessoa p SET p.id_endereco = seq_endereco.currval WHERE p.id_pessoa = tbPessoa(x).id_pessoa; EXCEPTION WHEN OTHERS THEN RAISE_APPLICATION_ERROR(-20002 ,'Não foi possível atualizar os dados na tabela PESSOA. Trigger: T_GERA_ENDERECO_AFTER ' || SQLERRM); END; -- atualiza valor do indice para o proximo registro x := tbPessoa.NEXT(x); END LOOP; END;
×
×
  • Criar Novo...