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

Responder a