[firebase-br] RES: Funcao Agregada

José Aparecido da Silva joseasilva em bol.com.br
Qua Nov 22 19:31:51 -03 2006


Faz assim no firebird:

SET TERM ^ ;

CREATE PROCEDURE NEW_PROCEDURE 
RETURNS (
    NOME VARCHAR(50),
    VALOR NUMERIC(18,2))
AS
declare variable Total numeric(18,2);
begin
    Total = 0;    
    For Select nm_pessoa, vl_valorqualquer from TABELA
    into
        :nome,
        :valor
    do
    begin
        Total = total + valor;        
        suspend;
    end
    Nome = 'Total';
    Valor = Total;
    Suspend;
end

^

SET TERM ; ^

-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Murilo >>> CPR Sistemas
Enviada em: quarta-feira, 22 de novembro de 2006 18:55
Para: lista em firebase.com.br
Assunto: [firebase-br] Funcao Agregada

Uma dúviada,

suponhamos que tenho o a seguinte procedure:

proc_teste(parametros de entrada...)
returns(.....)
as
begin
    Total = 0;    
    For Select nm_pessoa, vl_valorqualquer from TABELA
    into
        :nome,
        :valor
    do
    begin
        Total = total + valor;        
        suspend;
    end;
    Nome = 'Total';
    Valor = Total;
    Suspend;
end


Como resultado via me retornar +- isso:

NM_PESSOA    VL_VALORQUALQUER
Pessoa 1                                          5,00
Pessoa 2                                        10,00
Pessoa 3                                        30,00
Pessoa 4                                          8,00

Tem como eu fazer no mesmo select ou ainda com uma função ou algo do tipo 
(Nada de subselects no select principal, Ok.), que me traga a Soma da coluna

vl_valorqualquer, posi sei que se der um select Sum(vl_valorqualquer), ele 
retorna oq ue eu quero, mas gostaria de saber se tme como fazer isso de 
outra forma, trazer como uma nova linha de registro, de forma que o retorno 
seja assim:

NM_PESSOA    VL_VALORQUALQUER
Pessoa 1                                          5,00
Pessoa 2                                        10,00
Pessoa 3                                        30,00
Pessoa 4                                          8,00
TOTAL                                         53,00

Ou entõa na procedure um meio de fazer calcular os campos que eu já  peguei 
o valor. Espero que tenha sido claro o sulficiente.

______________________________
Murilo Garcia Bento
CPR Sistemas 









Mais detalhes sobre a lista de discussão lista