[firebase-br] SP Não retorna valores...

Zottis zottissistemas em brturbo.com.br
Sáb Ago 4 11:48:33 -03 2007


Pessoal, criei uma SP que chamo ela no Delphi da seguinte maneira:
      With SP_Historico_Caixa do
        begin
         Close;
         ParamByName('DATA_ATUAL').AsDate   := DiarioDATA.Value;
         PREPARE;
         ExecProc;
        end;
Só que ela não traz os valores, e no IBExpert funciona, o que estou fazendo
de errado?

Valeu

Zottis

Segue a SP:

SET TERM ^ ;

CREATE PROCEDURE SP_HISTORICO_CAIXA (
    data_atual date)
returns (
    no_cheques_hoje integer,
    total_cheques_hoje numeric(15,2),
    no_cheques_vencidos integer,
    total_cheques_vencidos numeric(15,2),
    no_cheques_geral integer,
    total_cheques_geral numeric(15,2),
    no_cheques_avencer integer,
    total_cheques_avencer numeric(15,2),
    saldo_bancario numeric(15,2))
as
declare variable soma_c numeric(15,2);
declare variable soma_d numeric(15,2);
begin
  if (:data_atual = current_date) then
     begin
            select coalesce(sum(CH.valor),0)
              from cheques CH
              where (CH.ativo ='S' and CH.vencimento = :data_atual)
              into :total_cheques_hoje;

            select coalesce(count(CH.chequeno),0)
              from cheques CH
              where (CH.ativo ='S' and CH.vencimento = :data_atual)
              into :no_cheques_hoje;

            select coalesce(sum(CH.valor),0)
              from cheques CH
              where (CH.ativo ='S' )
              into :total_cheques_geral;

            select coalesce(count(CH.chequeno),0)
              from cheques CH
              where (CH.ativo ='S')
              into :no_cheques_geral;

            select coalesce(sum(CH.valor),0)
              from cheques CH
              where (CH.ativo ='S' and CH.vencimento < :data_atual)
              into :total_cheques_vencidos;

            select coalesce(count(CH.chequeno),0)
              from cheques CH
              where (CH.ativo ='S' and CH.vencimento < :data_atual)
              into :no_cheques_vencidos;


            select coalesce(sum(CH.valor),0)
              from cheques CH
              where (CH.ativo ='S' and CH.vencimento > :data_atual)
              into :total_cheques_avencer;

            select coalesce(count(CH.chequeno),0)
              from cheques CH
              where (CH.ativo ='S' and CH.vencimento > :data_atual)
              into :no_cheques_avencer;
     end else
  if (:data_atual < current_date) then
    begin
            select coalesce(sum(CH.valor),0)
              from cheques CH
              where (CH.ativo ='S' and CH.vencimento = :data_atual)
              into :total_cheques_hoje;

            select coalesce(count(CH.chequeno),0)
              from cheques CH
              where (CH.ativo ='S' and CH.vencimento = :data_atual)
              into :no_cheques_hoje;

            select coalesce(sum(CH.valor),0)
              from cheques CH
              where (CH.ativo ='S' )
              into :total_cheques_geral;

            select coalesce(count(CH.chequeno),0)
              from cheques CH
              where (CH.ativo ='S')
              into :no_cheques_geral;

            select coalesce(sum(CH.valor),0)
              from cheques CH
              where (CH.ativo ='S' and CH.vencimento < :data_atual)
              into :total_cheques_vencidos;

            select coalesce(count(CH.chequeno),0)
              from cheques CH
              where (CH.ativo ='S' and CH.vencimento < :data_atual)
              into :no_cheques_vencidos;


            select coalesce(sum(CH.valor),0)
              from cheques CH
              where (CH.ativo ='S' and CH.vencimento > :data_atual)
              into :total_cheques_avencer;

            select coalesce(count(CH.chequeno),0)
              from cheques CH
              where (CH.ativo ='S' and CH.vencimento > :data_atual)
              into :no_cheques_avencer;
    end

        select  coalesce(sum (Mov.valor),0)
        from MovimentoCONTA Mov
        where (Mov.Tipo ='C' and Mov.Data <= :data_atual)
        into :soma_c;

        select  coalesce(sum (Mov.valor),0)
        from MovimentoCONTA Mov
        where (Mov.Tipo ='D' and Mov.Data <= :data_atual)
        into :soma_d;

         saldo_bancario = :soma_c- soma_d ;
 suspend;
end^

SET TERM ; ^

GRANT SELECT ON CHEQUES TO PROCEDURE SP_HISTORICO_CAIXA;

GRANT SELECT ON MOVIMENTOCONTA TO PROCEDURE SP_HISTORICO_CAIXA;

GRANT EXECUTE ON PROCEDURE SP_HISTORICO_CAIXA TO SYSDBA;





Mais detalhes sobre a lista de discussão lista