[firebase-br] Saber se numeração está ausente?

José Mauricio Barbisan Zottis bzottis em ig.com.br
Qua Out 2 17:54:24 -03 2013


Uma vez precisei e com a ajuda da lista cheguei a essa procedure, espero
que seja útil

SET TERM ^ ;

CREATE OR ALTER PROCEDURE OBTER_CODIGO_NULO
returns (
    codigo_nulo integer)
as
declare variable minimo integer;
declare variable maximo integer;
declare variable sequencia integer;
declare variable valor_atual integer;
begin
  select mIN(F.Codigo_anual) from Far_mtr F where EXTRACT(YEAR FROM
F.Data_cad) = EXTRACT(YEAR FROM CURRENT_DATE)
  INTO MINIMO;

  select max(F.Codigo_anual) from Far_mtr F where EXTRACT(YEAR FROM
F.Data_cad) = EXTRACT(YEAR FROM CURRENT_DATE)
  INTO MAXIMO;

  sequencia = MINIMO;

  while (sequencia <= maximo) DO
    begin
                 select FIRST 1 F.Codigo_anual from Far_mtr F where
F.Codigo_anual = :sequencia
                     and  EXTRACT(YEAR FROM F.Data_cad) = EXTRACT(YEAR FROM
CURRENT_DATE)
                 INTO Valor_atual;

            if (:Valor_atual <> :Sequencia) then
            begin
              CODIGO_NULO = Sequencia;
              leave;
            END
      Sequencia = Sequencia + 1;
  end

  suspend;
end^

SET TERM ; ^



Mais detalhes sobre a lista de discussão lista