[firebase-br] Reiniciar consulta SQL - Stored Procedure

Fábio P. Santos fpsgyn em gmail.com
Ter Abr 17 14:40:45 -03 2012


Vou exemplificar:

aqui estou gerando um resultado

SELECT 'RESULTADO1'
        FROM RDB$DATABASE
        INTO TEXTO;
    suspend;

for select
           rpad(documento,14,' ')
        || '0'
        .....
        from tabela
        ......
        into :texto
        do
            begin
                suspend;
            end


SELECT 'RESULTADO2'
        FROM RDB$DATABASE
        INTO TEXTO;
    suspend;

aqui estou gerando outro resultado
for select
           rpad(outrodocumento,14,' ')
        || '0'
        .....
        from tabela
        ......
        do
            begin
                suspend;
            end

Evidentemente a tabela existe vários outros campos, mas o conceito é o
mesmo o resultado da procedure irá retornar:

RESULTADO1
DOCUMENTO
DOCUMENTO
DOCUMENTO
DOCUMENTO
.
.
.
.
RESULTADO2
OUTRODOCUMENTO
OUTRODOCUMENTO
OUTRODOCUMENTO
OUTRODOCUMENTO
OUTRODOCUMENTO
.
.
.

Como são linhas, registro distintos tive de executar o mesmo for select
duas vezes, se fosse via linguagem de programação, por exemplo, delphi
ou java eu apenas forçaria o ponteiro da consulta voltar para o primeiro
registro e pronto, agora via SQL não sei têm como fazer.



Em 17 de abril de 2012 11:50, André Conrado <acf em andreconrado.net> escreveu:

> Uma outra forma seria o aninhamento de SPs.
>
> Dentro de uma SP usaria o FOR SELECT <SP filha selecionável> e o
> resultado desta manipularia mais uma vez para aperfeiçoar o dados.
>
> Esta é uma forma mais simples e limpa, mas os dados só poderão ser
> revistos apenas uma vez por execução.
>
> abçs.
>
>
> Em 17 de abril de 2012 11:39, André Conrado <acf em andreconrado.net>
> escreveu:
> > Voltar no primeiro registro do FOR SELECT não é possível.
> >
> > Tenho vários casos destes nos meus sistemas e tenho optado por colocar
> > os resultados em uma tabela temporária. Manipulo os dados quantas
> > vezes for preciso e após elimino os registros da tabela temporária.
> >
> > Este recurso implemento desde as primeiras versões do FB, contudo,
> > existem recursos de tabelas temporárias nas últimas versões do FB que
> > são mais automatizados, permitindo pular, por exemplo, o passo de
> > eliminar dos registros ao final do procedimento.
> >
> > abçs.
> >
> >
> >
> > Em 17 de abril de 2012 11:09, Fábio P. Santos <fpsgyn em gmail.com>
> escreveu:
> >> Já estou utilizando o for select
> >> o problema está em que queria poder reutilizar a sequencia de consulta
> >> dentro do for select
> >>
> >> Em 17 de abril de 2012 10:57, Hélio Oliveira <hpensador em gmail.com>
> escreveu:
> >>
> >>> Bom dia Fábio!
> >>>
> >>> Se entendi bem a sua necessidade, você poderá fazer isto facilmente
> >>> utilizando um for select .... do
> >>>
> >>>  Tenho um stored procedure selecionável, na select desta procedure ela
> me
> >>>> retorna algumas linhas de acordo com uma condição, estas linhas são
> >>>> processadas em uma etapa dentro da procedure, só que apos estas linha
> >>>> serem
> >>>> processadas eu tenho de retornar outras informações da mesma seleção
> da
> >>>> procedure, ou seja, tenho de executar a mesma sql, para não ter de
> repetir
> >>>> as mesmas instruções SQL, teria alguma maneira mais eficiente tipo um
> >>>> maneira de executar um First para o cursor retornar ao inicio da
> consulta
> >>>> sql ?
> >>>>
> >>>> Obrigado....
> >>>> ______________________________**________________
> >>>> 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<
> http://www.firebase.com.br/fb/artigo.php?id=1107>
> >>>> Para consultar mensagens antigas: http://firebase.com.br/**pesquisa<
> http://firebase.com.br/pesquisa>
> >>>>
> >>>>
> >>>
> >>> --
> >>> []'s,
> >>>
> >>> Hélio Oliveira
> >>> Analista de Sistemas
> >>> Delphi Developer
> >>> http://hpensador.blogspot.com/
> >>>
> >>>
> >>> ______________________________**________________
> >>> 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<
> http://www.firebase.com.br/fb/artigo.php?id=1107>
> >>> Para consultar mensagens antigas: http://firebase.com.br/**pesquisa<
> http://firebase.com.br/pesquisa>
> >>>
> >> ______________________________________________
> >> 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
>
> ______________________________________________
> 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