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