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
