Ivan veja se isto te ajuda:
-- consulta
select
q1.*,
saldo_cliente(q1.cliente, q1.codigo)
from
(
select
codigo, data, credito, debito, cliente
from
atc_saldo_clientes
where
cliente = 100
order by
movimento
) q1
--função
CREATE OR REPLACE FUNCTION "public"."saldo_cliente" (integer, integer)
RETURNS numeric AS
$body$
declare
v_cliente alias for $1;
v_codigo alias for $2;
v_saldo numeric;
begin
v_saldo :=
(
select
cast(cast(sum(debito)-sum(credito) as numeric(12,2)) as
numeric(12,2)) as total
from
<sua tabela>
where
cliente = v_cliente and
codigo <= v_codigo
);
return v_saldo;
end;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
Em 29/03/07, Ivan Guimarães Meirelles <[EMAIL PROTECTED]> escreveu:
Olá Gustavo...
Agradeço pela atenção...
A função que vc me passou não retorna o saldo como esperado, o que eu
desejo é que a cada linha me traga o resultado de (entrada - saida +
saldo_anterior).
Observe a as tabelas que postei abaixo....
Gustavo Garay (Lista) escreveu:
CREATE FUNCTION calcula_saldo(INTEGER, INTEGER)
RETURNS INTEGER AS $$
SELECT $1 - $2;
$$
LANGUAGE 'SQL';
en la consulta vas a llamar asi
select campo1, campo2, calcula_saldo(entrada,salida) as saldo from tutable
Gustavo
----- Original Message -----
*From:* Ivan Guimarães Meirelles <[EMAIL PROTECTED]>
*To:* Grupo de Usuários do PostgreSQL no Brasil<[email protected]>
*Sent:* Thursday, March 29, 2007 10:49 AM
*Subject:* Re: [PostgreSQL-Brasil] Função para calcular saldo do Caixa.
Sebastian Selau Webber Colombo escreveu:
jah que vc está começando com o pg, este artigo deve servir:
http://www.imasters.com.br/artigo/2065/postgresql/stored_procedures/
Obrigado Sebastian pela atenção...
Muito legal esses artigos, porém não resolvem a minha dúvida. Tenho uma
tabela CAIXA com dados a seguir:
*historico
* *entrada
* *saida
* Venda de Pneus
1.800,00
0,00
Pagamento de Telefone
0,00
328,00
Aquisição de máquinas
0,00
750,00
Gostaria de escrever uma função que ao ser executada me retorne o seguinte
resultado:
*historico
* *entrada
* *saida
* *saldo
* Venda de Pneus
1.800,00
0,00
1.800,00
Pagamento de Telefone
0,00
328,00
1.472,00
Aquisição de Máquinas
0,00
750,00
722,00
Ou seja, a função executaria um select na tabela CAIXA e para cada linha
retornada me informar o saldo.
Eu domino bem esse tipo de função (stored procedure) no firebird, mas não
achei nada que mostre o caminho de como manipular as linhas retornadas de um
select, uma-a-uma, no PostgreSQL.
Se alguém puder me passar alguma dica, ficarei muito grato.
Um abraço a todos...
------------------------------
_______________________________________________
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
_______________________________________________
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