Olá Victor, O problema com a trigger mutante é porque você esta dentro da trigger consultando a propria tabela. Tente mudar a logica para não fazer o select na tabela que esta sendo editada. Contudo caso não for possivel, você tem algumas saida, (quero escrever sobre isso no meu blog , mas a falta de tempo complica). 1º Você pode criar uma view com a mesma estrutura da tabela, criar trigger instead of, ai você faz a sua logica consultando a tabela e depois atualiza a tabela. 2º Você pode criar duas Trigger na tabela, uma a nivel de Linha e outra a nivel de instrução, e ainda um TYPE ou uma coleção na assinatura do pacote de um pacote (publicado). Feito isso para cada linha afetada você inclui o registro no TYPE e depois no final quando a trigger de instrução for disparada você percorre a coleção e faz sua logica para cada registro.
Alessandro Lúcio Cordeiro da Silva Analista de Sistema þ http://alecordeirosilva.blogspot.com/ ________________________________ De: Victor Freidinger <victor_freidin...@yahoo.com.br> Para: "oracle_br@yahoogrupos.com.br" <oracle_br@yahoogrupos.com.br> Enviadas: Quinta-feira, 15 de Dezembro de 2011 17:10 Assunto: Re: [oracle_br] Re: Dúvida Vetor Olá Luiz, Já havia esquecido deste tópico. Eu resolvi o problema de 2 formas diferentes, a primeira utilizando MULTISET e a outra utilizando Bubble Sort. Agora estou estudando outras formas de resolução. Mas, de qualquer forma, obrigado pelo link, será de boa ajuda para estudos. PS: O problema com a trigger com o pragma autonomous_transaction ainda persiste. ________________________________ De: LuizG <lgfco...@gmail.com> Para: oracle_br@yahoogrupos.com.br Enviadas: Quinta-feira, 15 de Dezembro de 2011 16:06 Assunto: [oracle_br] Re: Dúvida Vetor Oi Victor, Você pode usar uma coleção que no PL se denomina nested table. Dá uma olhada em: http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/collections.htm#BABFACFA --- Em oracle_br@yahoogrupos.com.br, "victor_freidinger" <victor_freidinger@...> escreveu > > Boa tarde, > > Sou novo em PL SQL e gostaria de uma ajuda na construção de um vetor. > Hoje eu tenho dessa forma e funciona para uma necessidade primária: > > > DECLARE > TYPE tvetor IS VARRAY(5) OF NUMBER(3); > > v tvetor; > i NUMBER := 1; > j NUMBER; > k NUMBER; > > pri NUMBER; > seg NUMBER; > ter NUMBER; > qua NUMBER; > qui NUMBER; > > qtd NUMBER; > > BEGIN > > v := tvetor(5, 10, 7, 9, 1); /* recebe vetor */ > > WHILE i <= 5 LOOP /* looping para contagem de tamanho do vetor */ > > j := 1; > qtd := 0; > > WHILE j <= 5 LOOP /* looping para a verificação dos valores */ > IF v(i) > v(j) THEN /* verificação se posição x é maior que posição y */ > qtd := qtd + 1; /* contagem para atribuição de valores nas variáveis */ > END IF; > j := j + 1; > END LOOP; > > IF (qtd + 1 = 1) THEN /* atribuindo valores as variáveis conforme a contagem > */ > pri := v(i); > ELSIF (qtd + 1 = 2) THEN > seg := v(i); > ELSIF (qtd + 1 = 3) THEN > ter := v(i); > ELSIF (qtd + 1 = 4) THEN > qua := v(i); > ELSE > qui := v(i); > END IF; > > i := i + 1; > > END LOOP; > > v := tvetor (pri,seg, ter, qua, qui); /* atribuindo valores no vetor */ > > FOR k IN v.FIRST..v.LAST LOOP /* looping para mostrar posição 1 primeiro > valor, posição 2 segundo valor, etc */ > DBMS_OUTPUT.PUT_LINE ('Posição '||k||': '||v(k)); > END LOOP; > > END; > > Eu gostaria de fazer desta forma: > > Eu chamasse na tela, independente de tamanho fixo do vetor, os valores que eu > vou querer. > Se necessário, pedir para informar qual é o limite de posições ou quando eu > colocar algum número ou letra, saisse fora(talvez -1). Não sei se é possível > fazer isso, mas, é uma idéia. > > E o mais importante, como que eu consigo ordenar dessa forma? > > Porque com valores fixos, eu limitei as variáveis e cada uma está recebendo > de uma variável conforme a verificação, mas, quando ficar mais 'dinâmico' eu > não vou conseguir trabalhar dessa forma. > > Será que alguém consegue me ajudar? > ------------------------------------ ---------------------------------------------------------- >Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira >responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ ---------------------------------------------------------- >Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » >Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: >http://www.oraclebr.com.br/ ---------------------------------------------------------- Links do Yahoo! Grupos [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]