2015-09-08 18:35 GMT-03:00 Tiago José Adami <[email protected]>:
> --- 2) A solução foi utilizar a função SQL abaixo:
> CREATE OR REPLACE FUNCTION f_date_day_add(
> d_date date,
> i_days integer)
> RETURNS date AS
> $BODY$
> SELECT d_date + 1 AS l_date
> $BODY$
> LANGUAGE sql VOLATILE;
>
> Há outras stored procedures que precisarei converter e nelas há
> códigos mais complexos que fazem diversas operações com campos tipo
> data.
>
> Seria possível implementar a função 1 em PL/pgSQL? Todas as pesquisas
> que faço acabam apontando para soluções em linguagem SQL.
>
Se for exatamente essa função, eu ficaria com SQL mesmo, e chame ela dentro
das suas PL/pgSQL's. E sua função é IMMUTABLE e não VOLATILE. Além disso
não está usando o parâmetro "i_days", nesse caso o corpo ficaria:
SELECT d_date + i_days;
Em PL/pgSQL puro é bem simples:
CREATE OR REPLACE FUNCTION f_date_day_add(
d_date date,
i_days integer)
RETURNS date AS
$BODY$
BEGIN
RETURN d_date + i_days
END;
$BODY$
LANGUAGE plpgsql IMMUTABLE;
Mas não vejo necessidade nesse caso. Se quiser altera uma variável na
função (como tentou antes), o seu "SET" deveria ser simplesmente:
ld_date := d_date + i_days;
Atenciosamente,
--
Matheus de Oliveira
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral