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

Jaelson jaelsonwagner em gmail.com
Qua Out 2 19:35:34 -03 2013


Talvez adaptando este código ajude.

-- se a tabela possui os registros 1,2,3,5,6,9,10, o retorno será 4,7,8


execute block
returns (campo integer)
as
declare variable menor integer;
declare variable maior integer;

begin
    for
        select min(c.referencial), max(c.referencial) from tabela c into
:menor, :maior
    do

    begin
        while (menor <= maior) do
            begin
                select cc.referencial from tabela cc where cc.referencial =
:menor into :campo;
                if (campo <> menor) then
                    begin
                        campo = :menor;
                        suspend;
                    end
                menor = menor + 1;
            end
    end
end

*Jaelson Wagner da Silva *
*Analista Desenvolvedor de Sistemas/Redes*


On Wed, Oct 2, 2013 at 5:54 PM, José Mauricio Barbisan Zottis <
bzottis em ig.com.br> wrote:

> 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 ; ^
> ______________________________________________
> 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