Re: [firebase-br] Select que traga números que não estão na sequencia

Jeferson Oliveira jefersonfoliveira em gmail.com
Seg Set 11 11:10:04 -03 2006


A única solução que visualizo é através de stored procedure.
Abaizo o código de definição de uma SP que escrevi nesse momento.
Testei rapidamente e parece resolver seu problema.


Abraço!
Jeferson Oliveira


create procedure SP_VAGA_EM_SEQUENCIA_NUMERICA (
    NOME_TABELA varchar(31),
    NOME_CAMPO varchar(31),
    NUMERO_INICIAL integer,
    NUMERO_FINAL integer)
returns (
    NUMERO_NAO_UTILIZADO integer)
as
declare variable ULTIMO_NUMERO_LIDO integer;
declare variable NUMERO_ATUAL integer;
declare variable SENTENCA varchar(200);
begin
  ULTIMO_NUMERO_LIDO = 0;
  SENTENCA = ' select ' || :NOME_CAMPO ||
             ' from ' || :NOME_TABELA ||
             ' where ' || :NOME_CAMPO || ' between ' ||
             :NUMERO_INICIAL || ' and ' || :NUMERO_FINAL ||
             ' order by ' || :NOME_CAMPO;
  for execute statement :SENTENCA into :NUMERO_ATUAL do
  begin
    while ((:NUMERO_ATUAL - 1) > :ULTIMO_NUMERO_LIDO) do
    begin
      NUMERO_NAO_UTILIZADO = :ULTIMO_NUMERO_LIDO + 1;
      ULTIMO_NUMERO_LIDO = :NUMERO_NAO_UTILIZADO;
      suspend;
    end
    ULTIMO_NUMERO_LIDO = :NUMERO_ATUAL;
  end
end^




Mais detalhes sobre a lista de discussão lista