ola Pessoal 

   { D6 + FB1.5 + DBExpress + CL10 }

   Como posso tratar valore NULL em procedure selecionavel. 
   Na procedure abaixo , as colunas  que por ventura naum recebem
   valores retornados do SELECT recebem o valor NULL ,queria que fossem 0 <zero>.
   E ,aproveitando, porque a variavel vsaldo eh sempre NULL ?
   Parece que a linha :     
   vsaldo = vsaldo + ((varejo_avista + atacado_avista + entradas + recebimentos) -
                (devolucoes + extornos)); naum eh interpretada ;-)

 Data        Varejo   Atacado Entradas  Devolucoes  Extornos   Recebimentos   Saldo
99/99/99   56,78    null        21,78        null            null           145,89         null     
99/99/99     0,00   23,76        15,60      45,98         12,90        167,90        null


deveria ficar assim : 

 Data        Varejo   Atacado Entradas  Devolucoes  Extornos   Recebimentos     Saldo
99/99/99   56,78     0,00        21,78        0,00           0,00           145,89       224,45     
99/99/99     0,00   23,76        15,60      45,98         12,90            167,90       372,83
......

Obrigado , a todos ....


   

  CREATE PROCEDURE MAPA_COMISSAO (
    DATAI DATE ,
    DATAF DATE ,
    ID_FUNCIO INTEGER)
RETURNS (
    DATA DATE,
    VAREJO_AVISTA NUMERIC(10,2),
    ATACADO_AVISTA NUMERIC(10,2),
    ENTRADAS NUMERIC(10,2),
    EXTORNOS NUMERIC(10,2),
    DEVOLUCOES NUMERIC(10,2),
    RECEBIMENTOS NUMERIC(10,2),
    SALDO  NUMERIC(10,2))
AS
declare variable idata date  ;
declare variable vsaldo numeric(10,2);
BEGIN
   idata = datai;
   vsaldo = 0 ;
   WHILE ( idata <= dataf ) DO
   BEGIN
    /* Totaliza Venda Varejo A Vista */
    SELECT SUM (O.TOTAL)
    FROM TBORCAM O
    WHERE O.DTORC =:idata AND O.VENDIDO='F'
          AND O.ID_FUNCIO=:ID_FUNCIO AND O.TIPO='V' AND O.VENDA='A'
    INTO :varejo_avista;


    /* Totaliza Venda Atacado A Vista */
    SELECT SUM (O.TOTAL)
    FROM TBORCAM O
    WHERE O.DTORC =:idata AND O.VENDIDO='F'
          AND O.ID_FUNCIO=:ID_FUNCIO AND O.TIPO='A' AND O.VENDA='A'
    INTO :atacado_avista;

    /* Totaliza Entradas de Venda a Prazo */
    SELECT SUM (O.VALORENTRADA)
    FROM TBORCAM O
    WHERE O.DTORC =:idata AND O.VENDIDO='F'
          AND O.ID_FUNCIO=:ID_FUNCIO AND O.VENDA='P'
    INTO :entradas;

    /* Totaliza Devolucoes */
    SELECT SUM (O.TOTAL)
    FROM TBORCAM O
    WHERE O.DTORC =:idata AND O.DEVOLUCAO='S' AND O.ID_FUNCIO=:ID_FUNCIO
    INTO :devolucoes;

    /* Totaliza Extornos */
    SELECT SUM (O.TOTAL)
    FROM TBORCAM O
    WHERE O.DTORC =:idata AND O.EXTORNO='S' AND O.ID_FUNCIO=:ID_FUNCIO
    INTO :extornos;

    /* Totaliza Contas Recebidas */
    SELECT SUM(R.VALPAG)
    FROM TBCONREC R
    WHERE R.DATPAG =:idata AND R.VALPAG>0 AND R.ID_FUNCIO=:id_funcio
    INTO :recebimentos;

    /* Saldo da linha de lancamentos */
    vsaldo = vsaldo + ((varejo_avista + atacado_avista + entradas + recebimentos) -
             (devolucoes + extornos));

    /* Dados da linha de retorno */

     DATA = idata;
     SALDO = vsaldo;
    SUSPEND;

    idata = idata + 1;
   end
END




