--- saulo Mendes <[EMAIL PROTECTED]> escreveu:

> Senhores,em uma determinada função se eu comparar um
> valor de uma variável, e esta contiver um valor
> nuloa consulta não me traz o resultado. Gostaria de
> saber como equacionar isso de forma
> não-redundante.segue o trecho da consulta:   select
> coalesce(sum(ie.qt_entrada*up.vr_fator),0)    from
> tb_itentrada_prod ie inner join tb_unid_produto up  
>   on (up.c_unid_produto = ie.c_unid_produto) and
> (up.d_unidade in ('E','A'))    inner join
> tb_entrada_prod e on (ie.c_entrada_prod =
> e.c_entrada_prod)     and (e.c_estoque =
> in_c_estoque) and    (to_timestamp(e.dt_emissao||'
> '||e.hr_entrada,     'YYYY-MM-DD HH24:MI:SS') >     
> coalesce(v_hr_inventario,'1900-02-20 11:18:14-03')) 
>   where (ie.c_produto = in_c_produto) and (ie.d_lote
> = vt_d_lote) <<<< vt_d_lote é uma variável....se o
> valor dela for nulo(esse campo pode ser nulo) a
> consulta não me traz o valor correto pois o postgres
> não entendeu tipo, ie.d_lote = null.    into
> vr_estoque_positivo;a solução parcial que encontrei
> é, antes de consulta (select coalesce...) eu testar
> se a variável é nula, caso seja eu reescrevo a
> função com o final ie.d_lote is null. Eu gostaria de
> eliminar esse redundância.agradeço, desde já.
> 


Se você deseja que a comparação de ie.d_lote e
vt_d_lote retorne verdadeiro quando ambos forem NULL
então utilize:
(ie.d_lote IS NOT DISTINCT FROM vt_d_lote)

Veja:
http://www.postgresql.org/docs/8.2/interactive/functions-comparison.html

[]s
Osvaldo


__________________________________________________
Fale com seus amigos  de graça com o novo Yahoo! Messenger 
http://br.messenger.yahoo.com/ 
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/

Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios

Responder a