senhores,no postgres eu consegui fazer da seguinte forma: sql = '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||')'; if vt_lote is null then sql = sql || ' and (ie.d_lote
is null)'; else sql = sql || ' and (ie.d_lote = '''||vt_lote||''')'; end
if; execute sql into vr_estoque_positivo;até aqui funcionou blz, mas, em
alguns casos, quando a consulta não acha os registros dá um erro: Erro: "ERROR:
cannot EXECUTE a null querystringCONTEXT: PL/pgSQL function
"fn_saldo_produto" line 73 at execute statement"gostaria de saber como tratar
isso.From: [EMAIL PROTECTED]: [EMAIL PROTECTED]: Wed, 21 Feb 2007 19:47:57
+0000Subject: Re: [PostgreSQL-Brasil] dúvida com "null"
pessoal, desculpe a insistência mas nosso dba saiu e eu tenho q programar e
'quebrar o galho' como dba.alguém poderia me dar uma dica sobre a sintaxe
abaixo?a function compila direito mas, na hora de executar me retorna o
seguinte erro:Erro: "ERROR: syntax error at or near "YYYY" at character
341From: [EMAIL PROTECTED]: [EMAIL PROTECTED]: Wed, 21 Feb 2007 19:27:58
+0000Subject: Re: [PostgreSQL-Brasil] dúvida com "null"
sql = '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,' -- >>>>>>> nesse
trecho eu preciso colocar um espaço em branco
-- qual
seria o caracter do postgres para espaço em branco? ||''''||'YYYY-MM-DD
HH24:MI:SS'||'''' ||') > coalesce('||v_hr_inventario||','||''''
||'1900-02-20 11:18:14-03'||''''||')) where (ie.c_produto =
'||in_c_produto||')'; if vt_lote is null then sql = sql || ' and
(ie.d_lote is null)'; else sql = sql || ' and (ie.d_lote = '||vt_lote||')';
end if; execute sql into vr_estoque_positivo;From: [EMAIL PROTECTED]: [EMAIL
PROTECTED]: Wed, 21 Feb 2007 18:53:19 +0000Subject: Re: [PostgreSQL-Brasil]
dúvida com "null"
infelizmente ainda não é isso......decidi tentar dessa forma sql = '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'||''''||'))
<<<<< estou tendo problemas com esse trecho, eu acho
(Erro: "ERROR: syntax
error at or near "12" at character 388) where (ie.c_produto =
'||in_c_produto||')'; if vt_lote is null then sql = sql || ' and
(ie.d_lote is null)'; else sql = sql || ' and (ie.d_lote = '||vt_lote||')';
end if; execute sql into vr_estoque_positivo;creio que, acertando essa
sintaxe(com a ajuda de vcs, espero) minha necessidade pode ser suprida.> Date:
Wed, 21 Feb 2007 15:10:13 -0300> From: [EMAIL PROTECTED]> To:
[email protected]> Subject: Re: [PostgreSQL-Brasil] dúvida com
"null"> > > --- [EMAIL PROTECTED] escreveu:> > > ok, nesse caso, só falta
adicionar isso na última> > cláusula...> > where (ie.c_produto =
in_c_produto)> > and ( (vt_d_lote is not null and ie.d_lote => >
vt_d_lote)> > or (vt_d_lote is null and ie.d_lote =null)> > > >
Conforme o que você descreveu, isso deverá> > funcionar, a não ser que seu
campo ie.d_lote não> > seja nulo em seu Banco de Dados.> > > > > De uma forma
mais simples:> > where (ie.c_produto = in_c_produto)> and (ie.d_lote IS NOT
DISTINCT FROM vt_d_lote)> >
http://www.postgresql.org/docs/8.2/interactive/functions-comparison.html> "IS
NOT DISTINCT FROM is identical to = for non-null> inputs, but it returns true
when both inputs are null,> and false when only one input is null."> > []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-usuariosDescubra e experimente
alguns novos serviços online no Windows Live Ideas Experimente!
Busque em qualquer página da Web com alta proteção. Obtenha o Windows Live
Toolbar GRATUITO ainda hoje! Experimente agora!
Ligue para os seus amigos grátis. Faça chamadas de PC-para-PC pelo messenger--
GRÁTIS Experimente agora!
_________________________________________________________________
Obtenha o novo Windows Live Messenger!
http://get.live.com/messenger/overview_______________________________________________
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