[firebase-br] Ajuda com Procedure

Galvao galvao.rodrigo em gmail.com
Qui Abr 26 09:09:43 -03 2007


Olá pessoal, tenho as tabelas a seguir:
CREATE TABLE TBL_GASTOS_MOTORISTAS (
    IDGASTOS      DMN_CODIGO NOT NULL /* DMN_CODIGO = INTEGER */,
    MOTORISTA     DMN_CODIGO NOT NULL /* DMN_CODIGO = INTEGER */,
    DATA_SAIDA    DMN_DATA /* DMN_DATA = DATE */,
    DATA_RETORNO  DMN_DATA /* DMN_DATA = DATE */,
    DIESEL        DMN_VALOR /* DMN_VALOR = DECIMAL(18,2) */,
    KM_SAIDA      DMN_CODIGO /* DMN_CODIGO = INTEGER */,
    KM_RETORNO    DMN_CODIGO /* DMN_CODIGO = INTEGER */,
    IDUSER        DMN_CODIGO NOT NULL /* DMN_CODIGO = INTEGER */
);

CREATE TABLE TBL_GASTOS_MOT_ENTRADAS (
    IDGASTOSENTRADA  DMN_CODIGO NOT NULL /* DMN_CODIGO = INTEGER */,
    IDGASTOS         DMN_CODIGO NOT NULL /* DMN_CODIGO = INTEGER */,
    DESCRICAO        DMN_NOMES /* DMN_NOMES = VARCHAR(80) */,
    VALOR            DMN_VALOR /* DMN_VALOR = DECIMAL(18,2) */,
    IDUSER           DMN_CODIGO NOT NULL /* DMN_CODIGO = INTEGER */
);
CREATE TABLE TBL_GASTOS_MOT_SAIDAS (
    IDGASTOSSAIDAS  DMN_CODIGO NOT NULL /* DMN_CODIGO = INTEGER */,
    IDGASTOS        DMN_CODIGO NOT NULL /* DMN_CODIGO = INTEGER */,
    DESCRICAO       DMN_NOMES /* DMN_NOMES = VARCHAR(80) */,
    VALOR           DMN_VALOR /* DMN_VALOR = DECIMAL(18,2) */,
    IDUSER          DMN_CODIGO NOT NULL /* DMN_CODIGO = INTEGER */
);

Preciso criar uma procedure que me retorne o total das saidas e o total 
das entrada, tendo como base o IDGASTOS, da TBL_GASTOS_MOTORISTAS.
to fazendo assim:
begin
for
  select  sum(gme.valor) as entradas, sum(gms.valor) as saidas
    from tbl_gastos_motoristas gm
    left join tbl_gastos_mot_entradas gme on (gme.idgastos=gm.idgastos)
    left join tbl_gastos_mot_saidas gms on (gms.idgastos=gm.idgastos)
    where gm.idgastos=:codigo_receita
  into :total_entradas, :total_saidas
do
  suspend;
end

mas tá me retornando o somatório errado, tá somando duas vezes ou tres 
cada registro, como devo fazer?

Att.

Rodrigo




Mais detalhes sobre a lista de discussão lista