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]> 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, "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]

Responder a