Ivan Guimarães Meirelles escreveu:
> 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.
> 


Se sua tabela possui uma chave primária que mantenha os registros na 
ordem que devm ser considerados, por ex. um campo SERIAL, você pode 
utilizar uma query do tipo:

bdteste=# SELECT * FROM foo;
  id | historico | entrada | saida
----+-----------+---------+--------
   1 | xxx       |  800.00 |   0.00
   2 | xxxxx     | 1000.00 |   0.00
   3 | yyy       |    0.00 | 328.00
   4 | yyyyyy    |    0.00 | 750.00
(4 registros)

bdteste=# SELECT historico, entrada, saida, (SELECT 
sum(entrada)-sum(saida) FROM foo AS f WHERE f.id <= foo.id) as saldo 
FROM foo ORDER BY id;
  historico | entrada | saida  |  saldo
-----------+---------+--------+---------
  xxx       |  800.00 |   0.00 |  800.00
  xxxxx     | 1000.00 |   0.00 | 1800.00
  yyy       |    0.00 | 328.00 | 1472.00
  yyyyyy    |    0.00 | 750.00 |  722.00
(4 registros)

[]s
Osvaldo
_______________________________________________
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