[firebase-br] Procurar código disponível

paulosxs Yahoo! paulosxs em yahoo.com.br
Ter Abr 24 19:57:19 -03 2007


"Luciano S Gularte" <lsgulart em terra.com.br> escreveu:

>     Recentemente importei o cadastro de produtos de um cliente para meu 
> banco de dados. Ao verficar os dados percebi que haviam vários "pulos" entre 
> os códigos dos produtos.
>     Pra aproveitar esses códigos, pensei em fazer uma StoredProcedure onde 
> faria um for de 1 até o "Select Max(Codigo)+1", pesquisando se cada código 
> encontrado está em uso, se não, ao achar o primeiro eu abortaria e 
> retornaria o código encontrado, caso contrário a Procedure vai chegar no 
> Max+1, ou seja, no próximo disponível. Sei que em determinados momentos, 
> quando esta tabela estiver grande, eu possa ter problemas de performance, 
> mas mesmo assim eu gostaria de fazer, pois essa Procedure pode me ajudar em 
> outras partes do sistema.
>     Alguém já fez isso? É possível? Tentei começar mas travei na parte do 
> FOR dentro da Procedure.
--------
(...)
begin

   select first 1 Codigo+1
      from Produtos P
         where not exists(select null from Produtos PP where 
PP.Codigo=P.Codigo+1)
         order by Codigo
         into :CodigoLivre;

   suspend;
end
--------

Isso ajuda?






Mais detalhes sobre a lista de discussão lista