[firebase-br] Tratar valores NULL em SP - Selecionavel

Fábio Henrique Beccaria Sampaio fabiohbsampaio em gmail.com
Qua Maio 3 11:04:01 -03 2006


Não sabia dessa....   Obrigado pela dica também.....

----- Original Message ----- 
From: "Alisson" <arsuart em uol.com.br>
To: <lista em firebase.com.br>
Sent: Wednesday, May 03, 2006 10:29 AM
Subject: Re: [firebase-br] Tratar valores NULL em SP - Selecionavel


Vc pode fazer como o Colega Fabio disse.. no If Null.. receber Zero..

ou entao faça assim..

    SELECT COALESCE(SUM (O.TOTAL),0)
    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;

Utilize o Coalesce.. pq se retornar nulo.. ele substitui pra vc por Zero...

Falow..!!!!


<savio_assuncao em ibest.com.br> escreveu na
mensagem news:20060503131721.4438CE3127 em sauron.ibest.com.br...
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



______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa







--------------------------------------------------------------------------------


______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço 
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa 





Mais detalhes sobre a lista de discussão lista