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

Responder a