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

Eduardo Bahiense eduardo em icontroller.com.br
Dom Abr 20 19:38:50 -03 2008


Olá Felipe

Digamos que a última seqüência do seu cadAstro seja 10.000. Se você 
tivesse uma tabela com somente um campo SEQID você poderia fazer uma 
query where not exists().

CREATE TABLE SEQUENCIAS (SEQID INTEGER);

Abaixo, um *protótipo* de stored procedure e uma query.


CREATE PROCEDURE POPULATESEQUENCIAS;
DECLARE VARIABLE MINIMO INTEGER;
DECLARE VARIABLE MAXIMO INTEGER;

SELECT COALESCE(MAX(SEQID),0)+1 FROM SEQUENCIAS INTO :MINIMO;
SELECT COALESCE(MAX(SEQUENCIA),0) FROM PRODUTOS INTO :MAXIMO;

FOR I = :MINIMO TO :MAXIMO DO
BEGIN
	INSERT INTO SEQUENCIAS (SEQID) VALUES(:MINIMO);
	:MINIMO = MINIMO +1;
END

******************************

EXECUTE PROCEDURE POPULATESEQUENCIAS;

SELECT SEQID A FROM SEQUENCIAS WHERE NOT EXISTS(SELECT 1 PRODUTOS WHERE 
SEQUENCIA = A.SEQID)

Abs

Eduardo

FireBird FireBird escreveu:
> 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
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> 





Mais detalhes sobre a lista de discussão lista