Segue o Corpo da Funcao:

CREATE OR REPLACE FUNCTION "public"."funcalcliqmerc" (tipo varchar, filial 
bigint, documento bigint, serie varchar, clifor bigint, item bigint) RETURNS 
numeric [] AS
$body$
/* Corpo da nova função */
declare

   linha record;
   bruto numeric;
   vmerc numeric;
   acres numeric;
   desco numeric;
   arred numeric;
   liqui numeric[];

begin

    select into linha documento,item,
    quantidade,valorunitario,coeficiente,
    percdescproduto,percdesctotal
    from movimento
    where movimento.tipo = $1
    and movimento.filial = $2
    and movimento.documento = $3
    and movimento.serie = $4
    and movimento.clifor = $5
    and movimento.item = $6;

    if FOUND then
       vmerc := (linha.valorunitario * linha.quantidade);
       bruto := (linha.valorunitario * linha.coeficiente);
       bruto := (bruto * linha.quantidade);
       acres := bruto - vmerc;
       desco := bruto * (linha.percdescproduto / 100);
       arred := (bruto - desco) * (linha.percdesctotal / 100);
    else
       vmerc := 0.00;
       bruto := 0.00;
       acres := 0.00;
       desco := 0.00;
       arred := 0.00;
    end if;

    liqui[1] := round((vmerc - desco - arred + acres),2);
    liqui[2] := round(desco,2);
    liqui[3] := round(arred,2);
    liqui[4] := round(acres,2);

    return liqui;
end;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;

----- Original Message ----- 
From: "Osvaldo Kussama" <[email protected]>
To: "Comunidade PostgreSQL Brasileira" <[email protected]>
Sent: Tuesday, May 26, 2009 12:49 PM
Subject: Re: [pgbr-geral] retorno de funcao em view


2009/5/26 Jeferson <[email protected]>:
>
> Criei uma funcao que retorna valores em um campo array (retorno[]). uso
> esse campo numa view, gostaria de saber se posso criar colunas que apontem
> para cada um dos valores no resultado da funcao em cada linha da consulta.
>


Assim?

bdteste=# CREATE OR REPLACE FUNCTION ffoo() RETURNS int[] AS $$
VALUES (ARRAY[11,22,33]);
$$ language SQL;
CREATE FUNCTION

bdteste=# SELECT a[1], a[2], a[3] FROM ffoo() as a;
 a  | a  | a
----+----+----
 11 | 22 | 33
(1 registro)

bdteste=# CREATE VIEW vffoo AS (SELECT a[1] AS x, a[2] AS y, a[3] AS z
FROM ffoo() as a);
CREATE VIEW

bdteste=# SELECT * FROM vffoo;
 x  | y  | z
----+----+----
 11 | 22 | 33
(1 registro)

Osvaldo
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral 

_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a