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