Em 18 de setembro de 2012 15:26, Stclara <[email protected]> escreveu:
>
> A função:
> CREATE OR REPLACE FUNCTION saldocaixa() RETURNS SETOF saldo_caixa AS
> $body$
> DECLARE
>    debito_atual NUMERIC(18,2);
>    linha saldo_caixa;
> begin
>    SELECT INTO debito_atual SUM(value_cash) FROM cashes WHERE
> (type_cash= 'D');
>    linha.debito = debito_atual;
> RETURN;
> END
> $body$
> LANGUAGE 'plpgsql';
>
>
> Aí para usar:
> select * from saldocaixa().
>
> No entanto, não retorna valor algum. Onde estou errando?


Pude identificar duas razões para o retorno vazio:
I - Verifique se na tabela cashes a coluna type_cash possui valores
iguais a 'D" (creio que sim);
II - Para que uma função que retorna set of funcione adequadamente
você tem que usar "return next" para cada registro retornado  e
"return" no final [1].
III - Levando em conta que sua função retornará mais de um registro é
bom você dar uma olhada no "for select loop" [1] e [2].

[1] - 
http://www.postgresql.org/docs/9.2/static/plpgsql-control-structures.html#PLPGSQL-STATEMENTS-RETURNING
[2] - 
http://www.postgresql.org/docs/9.2/static/plpgsql-control-structures.html#PLPGSQL-RECORDS-ITERATING

-- 
Marcone Peres - DBA
http://www.linkedin.com/in/marconeperes
@marconeperes
(61) 8146-0028
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a