[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