Edison Muito boa a solução! =^D
[ ] André Em 01/12/07, Edison Eduardo Bonomi <[EMAIL PROTECTED]> escreveu: > > Galera, creio que assim seja mais fácil: > > ---------------------------------------- > -- SELECIONANDO O PRIMEIRO CODIGO VALIDO > ---------------------------------------- > select nvl(min(codigo),0)+1 > from sequencia > where (codigo+1) not in (select codigo from sequencia); > > Att, > > Edison Eduardo. > > > Gabriel Herdt <[EMAIL PROTECTED] <gabrielherdt%40gmail.com>> > escreveu: > Eu concordo com vocês. acho besteira ter que preencher números vagos. > Mas não tem meios de convence o chefe hehehe. > Uma solução é colocar sequence já que essa tabela tem um alto volume > de dados. e assim nao precisar preencher os numeros vagos. > > Mas a solução ótima seria preencher os vagos rápido :D > > resumindo: é importante sim. não uso sequence porque preciso preencher > números vagos(delatados) > > --- Em oracle_br@yahoogrupos.com.br <oracle_br%40yahoogrupos.com.br>, > "Andre Santos" > <[EMAIL PROTECTED]> escreveu > > > > Gabriel > > > > Pegando carona na pergunta do Roberto... é tão importante assim não > deixar > > números "vagos" na seqüência? > > > > [ ] > > > > André > > > > > > Em 28/11/07, Roberto Amorim <[EMAIL PROTECTED]> escreveu: > > > > > > Pode parecer ingenuidade minha, mas, porque não usar o sequence? > > > > > > Gabriel Herdt escreveu: > > > > Pessoal to com um problema. Fiz essa função no meu oracle 10g > > > > enteprise. em que ele faz um sequence do campo x e da tabela x. > > > > A função atende muito bem ate um certo numero de dados na tabela > > > > depois fica muito lento(20.000 registros +). > > > > > > > > O que posso fazer para otimizar a rotina? > > > > Objetivo dela é fazer seqüencia, e no caso de algum código for > > > > detetado. o próximo cadastrado assuma seu lugar. > > > > > > > > FUNCTION FN_NVAGO > > > > ( pn_nomeCAM IN VARCHAR2,-- parametro Nome do campo > > > > pn_nomeTab IN VARCHAR2,-- parametro Nome da Tabela > > > > pr_texto OUT varchar2) -- Paramentro de saida msg de erro > > > > RETURN NUMBER IS > > > > ln_cont NUMBER;-- variavel de retorno informando o menor "buraco" > > > > na sequencia > > > > ln_tam NUMBER; -- variavel informando o maior numero da sequencia > > > > i NUMBER; -- contador do loop > > > > BEGIN > > > > pr_texto := ''; > > > > > > > > --SQL PARA vereficar maior numero da sequencia do campo e tabela > > > > infomado por parametro > > > > EXECUTE IMMEDIATE 'Select Max('||pn_nomeCAM||') FROM '||pn_nomeTAB > > > > into ln_tam; > > > > if ln_tam is null then > > > > Return 1; > > > > end if; > > > > --For de 1 ate numero maximo de sequencia > > > > FOR i IN 1..ln_tam LOOP > > > > -- select para localizar "buracos" na sequencia e informar > > > > menor numero faltando na seq > > > > EXECUTE IMMEDIATE 'Select count('||i||') From '||pn_nomeTab||' > > > > Where '||pn_nomeCAM||' = '||i into ln_cont; > > > > IF ln_cont = 0 THEN > > > > RETURN i; > > > > EXIT; > > > > END IF; > > > > END LOOP; > > > > If ln_cont = 1 THEN -- se nao achar nada pega o maior numero de > > > > sequencia e somar mais 1 > > > > return ln_tam+1; > > > > end if; > > > > EXCEPTION > > > > WHEN OTHERS THEN > > > > ROLLBACK; > > > > pr_texto := 'Erro -3000 : Erro ao gerar sequencia'; > > > > DBMS_OUTPUT.put_line (SUBSTR ('Error ' || TO_CHAR (SQLCODE) || ': > > > > ' || SQLERRM, 1, 255)); > > > > END; > > > > > > > > > > > > > > > > > > > >> Apostilas » Dicas e Exemplos » Funções » Mundo Oracle » Package » > > > Procedure » Scripts » Tutoriais acesse: > > > http://www.oraclebr.com.br/codigo/ListaCodigo.php > > > >> > > > > ---------------------------------------------------------- > > > > > > > >> 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/ > > > > ---------------------------------------------------------- > > > > > > > >> 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] > > > > --------------------------------- > Abra sua conta no Yahoo! Mail, o único sem limite de espaço para > armazenamento! > > [As partes desta mensagem que não continham texto foram removidas] > > > [As partes desta mensagem que não continham texto foram removidas]