[firebase-br] Duvidas com SUSPEND

bvrenato bvrenato em click21.com.br
Seg Nov 9 15:02:31 -03 2009


Boa tarde pessoal,

Desenvolvi uma SP para consultar dados com a construção For Execute Statement
para retornar uma lista para o grid da aplicação (até aqui tudo certo.). Porém,
nessa SP eu gero algumas somatórias e calculos percentuais a cada linha que é
processada para gerar um resumo, o qual estou devolvendo para a aplicação após
todas as linhas serem processadas (pelo menos minha idéia é essa).
Para entendimento: Essa SP fará a leitura de registros contendo, além de outros,
atributos de cor. Então além de mostrar os registros no grid eu preciso fazer um
resumo contendo informações por cada cor (poderá haver varios registros com a
mesma cor) lida da tabela. Além do atributo cor existem atributos datas,
valores, documentos, etc.


Só que acho que estou errando na hora de devolver este resumo. Estou fazendo
assim dentro da SP:

SP CONSULTA
...
RETURNS(
    VAR1,
    VAR2,
    OUTRAS_VARIAVEIS,
    VARIAVEIS_RESUMO)
AS
   DECLARE VARIAVEIS_LOCAIS
BEGIN
          ...
          FOR EXECUTE STATEMENT MEU_SELECT
          INTO
               VAR1,        ------> Retorna para a aplicação
               VAR2,
               ...
          DO
          BEGIN
                 OUTRAS_VARIAVEIS = QUALQUER COISA     -----> Retorna para a
apalicação
                 ...
                 VARIAVEIS_LOCAIS = ALGUNS SOMATORIOS E PERCENTUAIS

                 SUSPEND       ---------> SUSPEND 1
          END

          --Envia o resumo para a aplicação aqui

          VARIAVEIS_RESUMO = VARIAVEIS_LOCAIS

          SUSPEND               ----------> SUSPEND 2
END


O que está acontecendo:
1) Não sei se está correto o uso do SUSPEND 2;

2) O laço DO retorna todas a variaveis para o grid e repete a ultima linha
(registro da tabela), mas minha tabela de resumo só mostra o ultimo registro
lido no laço DO, ou seja, não acumula nada;

3) se eu deixar somente o SUSPEND 2, minha tabela de resumo fica montada
corretamente, porém o grid só mostra um registro (mesmo tendo vários).

4) Já tentei colocar o resumo dentro do laço DO, antes do SUSPEND 1, e tirar o
SUSPEND 2, mas tb nã funcionou.

grato


Renato




___________________________________________________________________________________
Para fazer uma ligação DDD pra perto ou pra longe, faz um 21. A Embratel tem
tarifas muito baratas esperando por você. Aproveite!





Mais detalhes sobre a lista de discussão lista