[firebase-br] Duvida, existe comando, forma de fazer???

Eduardo Bahiense eduardo em icontroller.com.br
Seg Abr 21 10:50:32 -03 2008


Talvez você não tenh aprestado atenção na linha

"Abaixo, um *protótipo* de STORED e uma query."

no meu post. Ou seja, te sugeri que criasse uma stored procedure no 
banco e não uma procedure no Delphi.

Só sugeri a criação de uma tabela auxiliar porque detectar seqüências 
furadas poderia ser um requisito crítico ou muito comum no seu sistema.

Observe que, da primeira vez, serão inseridos os 100 mil registros. Após 
isso, a inserção será proporcional à demanda.

Observe também que uma tabela de somente um campo, com 100 mil registros 
integer, equivale, sob alguns aspectos, a uma tabela com de 5 mil 
registros com uma média de 20 campos. Além disso, a única conseqüência 
para o seu banco seria um pequeno aumento do tamanho, pois, tratando-se 
de um processo auxiliar e isolado, praticamente para se extrair um 
relatório de tempos, não afetaria em nada a performance.

Não testei a sugestão do Paulo, mas acredito que ela não retornaria 
todos os furados, se houvesse um intervalo maior que 1 (100, 120,121...).

O protótipo que te sugeri merece alguma otimização, por exemplo, 
registrar até que sequência pesquisei da última vez para não ter que 
varrer os 100 mil registros a cada vez, mas isso deixo por tua conta se 
você vier a adotá-lo.

Abs

Eduardo




FireBird FireBird escreveu:
> Eduardo tudo bom grande...
> No seu exemplo, eu tenho que preencher a tabela com For na apliacao.
> 
> FOR I = :MINIMO TO :MAXIMO DO
> BEGIN
>        INSERT INTO SEQUENCIAS (SEQID) VALUES(:MINIMO);
>        :MINIMO = MINIMO +1;
> END
> 
> Eu precisava ver os codigos faltantes numa sequencia de 100 Mil Registros,
> desse geito apresentado eu teria que incluir 100 MIL registros na tabela
> sequencias, para depois executar a procedure, que funciona corretamente.
> 
> 
> At,
> Felipe
> 
> 
> Em 20/04/08, Eduardo Bahiense <eduardo em icontroller.com.br> escreveu:
>>
>> Não vi nenhuma sugestão para fazer via aplicação. :-(
>> A minha e a do Paulo só envolvem o banco. O que você tem em mente que a
>> gente não oestá entendendo?
>>
>>
>> Abs
>>
>> Eduardo
>>
>> FireBird FireBird escreveu:
>>
>>> Pelas Sugestoes, ainda vejo a unica forma de fazer parte na apliacacao,
>>> queria algo feito so pelo banco.
>>>
>>> Valeu..
>>>
>>> Em 20/04/08, Paulo Geloramo <paulogeloramo em terra.com.br> escreveu:
>>>> Para retornar o proximo código livre você pode usar este:
>>>>
>>>> select first 1 (c.codigo_cli + 1) buraco
>>>> from cliente c
>>>> where (select count(d.codigo_cli)
>>>> from cliente d
>>>> where d.codigo_cli = c.codigo_cli + 1) = 0
>>>> order by c.codigo_cli
>>>>
>>>>
>>>> Abraços,
>>>>
>>>> Paulo Geloramo
>>>>
>>>>
>>>>   ----- Original Message -----
>>>>   From: FireBird FireBird
>>>>   To: FireBase
>>>>   Sent: Sunday, April 20, 2008 6:32 PM
>>>>   Subject: [firebase-br] Duvida, existe comando, forma de fazer???
>>>>
>>>>
>>>>   Pessoal, tenho uma duvida, mas imagino que não tenha como resolver de
>>>> forma
>>>>   com comando SQL, ou Stored Procedure, mas como meu conhecimento e
>>>> limitado.
>>>>
>>>>   E o seguinte:
>>>>
>>>>   Tenho um cadastro de Produto, com seqüência 1,2,3,4,5,6,8,9,10,15,17.
>>>>
>>>>   Gostaria de saber se existe uma forma de saber os pulos que esta
>>>> seqüência
>>>>   deu, olhando este seqüência, acima vemos que faltou o intervalo:
>>>>   11,12,13,14,16.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>   Valeu pessoal, espero que tenha conseguido expressar corretamente
>> minha
>>>>   duvida.
>>>>
>>>>
>>>>   At,
>>>>   Felipe
>>>>
>>>>   ______________________________________________





Mais detalhes sobre a lista de discussão lista