acho q dessa maneira resolve seu problema
CREATE OR REPLACE FUNCTION "public"."funcalcliqmerc" (tipo varchar, filial
bigint, documento bigint, serie varchar, clifor bigint, item bigint, out
liq1 numeric , out liq2 numeric , out liq3 numeric, out liq4 numeric)
RETURNS record AS
.
.
.
liqui1 := round((vmerc - desco - arred + acres),2);
liqui2 := round(desco,2);
liqui3 := round(arred,2);
liqui4 := round(acres,2);
return next;
end;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
2009/5/26 Jeferson <[email protected]>
> 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:* André Pignata <[email protected]>
> *To:* Comunidade PostgreSQL Brasileira<[email protected]>
> *Sent:* Tuesday, May 26, 2009 12:01 PM
> *Subject:* Re: [pgbr-geral] retorno de funcao em view
>
> Ao invés de criar um array, você pode utilizar parâmetros OUT, assim cada
> parâmetro pode ser uma coluna da sua view, se eu entendi sua dúvida, acho
> que isto irá funcionar.
> Abçs
>
> 2009/5/26 Jeferson <[email protected]>
>
>> Bom dia a todos,
>>
>> 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.
>>
>> _______________________________________________
>> pgbr-geral mailing list
>> [email protected]
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
>
>
> --
> André Luiz Martins Pignata
> Integral Convênios Odontológicos
> Gerente de TI
>
> ------------------------------
>
> _______________________________________________
> 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
>
>
--
André Luiz Martins Pignata
Integral Convênios Odontológicos
Gerente de TI
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral