2016-03-04 9:49 GMT-03:00, Pablo Farias <pabloapfar...@gmail.com>:
> Ola pessoal,
> sempre trabalhei com o firebird, porem venho migrando para o postgresql,
> porem tenho me esbarrado em algumas coisas que podem ser basicas para voce,
> mais pra eu vem dando um baita trabalhão.
>
> Estou tentando criar a seguinte função basica, só para eu entender o
> funcionamento da mesma, e aplicar mais informações a ela.
>
> A Function em sim é criada sem erro:
>
>
> Create or Replace Function fluxo_base(date, date) returns setof cliente as
> '
> declare
> data date;
>   begin
> return query SELECT
>   financeiro.id,financeiro.data_vencimento,
>   financeiro.numero_documento,
>   (SELECT sum(valor_parcela) FROM financeiro WHERE tipo_conta = "R"  and
> data_vencimento between $1 and $2) AS "Valor a Receber",
>   (SELECT sum(valor_parcela) FROM financeiro WHERE tipo_conta = "P" and
> data_vencimento between $1 and $2) AS "Valor a Pagar"
> FROM
>   financeiro;
> return;
>   end
> '
> language 'plpgsql'
>
>
> Porem quando eu chamo ela assim:
>
> select * from fluxo_base("05/03/2015","20/07/2018");
>
> Ela gera o seguinte erro:
>
> ERROR:  column "05/03/2015" does not exist
> LINE 1: select * from fluxo_base("05/03/2015","20/07/2018");
>                                  ^
> ********** Error **********
>
> ERROR: column "05/03/2015" does not exist
> SQL state: 42703
> Character: 26
>
>


Quando você faz:
... tipo_conta = "R" ...
você está comparando o campo tipo_conta com a variável denominada "R"
e não com a consttante 'R'. Idem para "P".

Tente:
Create or Replace Function fluxo_base(date, date) returns setof cliente as
$$
declare
data date;
  begin
        return query SELECT
  financeiro.id,financeiro.data_vencimento,
  financeiro.numero_documento,
  (SELECT sum(valor_parcela) FROM financeiro WHERE tipo_conta = 'R'
and data_vencimento between $1 and $2) AS "Valor a Receber",
  (SELECT sum(valor_parcela) FROM financeiro WHERE tipo_conta = 'P'
and data_vencimento between $1 and $2) AS "Valor a Pagar"
FROM
  financeiro;
  end
$$
language 'plpgsql'

e
select * from fluxo_base('05/03/2015'::date, '20/07/2018'::date);

Osvaldo
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a