è só dar um select * from funcalcliqmerc(tipo,filial,documento,seria,clifor,item)
2009/5/26 André Pignata <[email protected]> > 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 > -- 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
