Ivan Guimarães Meirelles escreveu: > Com a ajuda do colega Adriano Espinoza, construi essa Função: > > CREATE OR REPLACE FUNCTION "public"."livrocaixa" (date, date) RETURNS > SETOF "public"."caixa" AS > $body$ > declare > registros record; > begin > for registros in > SELECT cx.emissao, cx.historico, cx.entrada, cx.saida, > (SELECT sum(x.entrada)-sum(x.saida) FROM caixa AS x WHERE > x.idcaixa <= cx.idcaixa) as saldo > FROM caixa as cx where cx.emissao between $1 and $2 ORDER BY > cx.idcaixa > loop > return next registros; > end loop; > return; > end > $body$ > LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; > > Porém ao chamar essa função o seguinte erro ocorre: > > ERROR: wrong record type supplied in RETURN NEXT > CONTEXT: PL/pgSQL function "livrocaixa" line 9 at return next >
Você está retornando registros do tipo caixa (tipo associado a sua tabela). Pelo que você dá a entender este tipo não contém o campo saldo (mão é um campo de sua tabela). Solução: crie um tipo com o que deseja retornar e utilize-o em sua função. Veja o primeiro exemplo em: http://www.postgresql.org/docs/8.2/interactive/sql-createtype.html []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
