Sim, exatamente..
Criei um modelinho com as tabelas que voce tem para brincar:

carro ( idcarro, zerokm, custo)
venda ( idvenda, idcarro, idvendedor, valorvenda)
vendedor ( idvendedor, comissao)


o calculo eu faria assim:

select
  sum( case when c.zerokm then (v.valor - *calcula_custo( c.idcarro )*  ) *
r.comissao
          else v.valor * r.comisao
  end )    as valor_comissao
from venda v
left join carro c on c.idcarro = v.idcarro
left join vendedor r on r.idvendedor = v.idvendedor
where v.idvenda=p_venda

roda somente este SQL na sua base, fazendo a alteracao nos nomes das tabelas
e campos, e colocando a sua funcao para custo ali no
*calcula_custo( c.idcarro )*

Espero que de pra dar umaa ideia

2009/10/2 Bruno Carneiro <guimaraescarne...@gmail.com>

>
>
> Jose adriano Alves wrote:
> >
> > Estive simulando uma forma de fazer essa procedure e vi que da pra fazer
> > em
> > um select into todo o processo...
> >
>
> Estive pensando, como tenho dados de tabelas diferentes, para trazer tudo
> com apenas um SELECT eu teria que fazer um join para trazer tudo em um
> único
> SELECT. Que inclusive creio que já foi indicado acima.
>
> É disso mesmo que você está falando?
>
> Realmente parece que fazer um SELECT com JOINS é menos custoso do que fazer
> aguns SELECTs simples.
>
> É isso? Mas porquê?
>
> Eu pensei que fosse porque cada select implica em uma transferencia de
> dados, mas como tudo está dentro de um procedure, imagino que não há essa
> transferência enquanto a procedure não for finalizada, logo isso não seria
> um problema.
>
> Alguém poderia me esclarecer?
> --
> View this message in context:
> http://www.nabble.com/Atribuir-valor-escalar-retornado-de-um-SELECT-em-plpgsql-tp25704399p25714313.html
> Sent from the PostgreSQL - Brasil mailing list archive at Nabble.com.
>
> _______________________________________________
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>



-- 
----

Att.
José Adriano Alves
Analista de Sistemas - Móveis Gazin.
Cel..:  +55 44 8802 3994
Fone: + 55 44 3663 8000 - 2319
Mail: alves.jadri...@gazin.com.br
MSN: jose.adri...@gazin.com.br



Este e-mail, seu conteúdo e seus anexos estão sujeitos à privilégio de
comunicação podendo este documento incluir informação confidencial e de
propriedade restrita da GAZIN e apenas pode ser lido por aqueles a qual o
mesmo tenha sido endereçado. Se você recebeu essa mensagem de e-mail
indevidamente, por favor avise-nos imediatamente. Quaisquer dados, opiniões
ou informações expressadas neste e-mail pertencem ao seu remetente e não
necessariamente coincidem com aquelas da GAZIN, são de exclusiva
responsabilidade do signatário. Este documento não pode ser reproduzido,
copiado, distribuído, publicado ou modificado por terceiros, sem a prévia
autorização por escrito da GAZIN.


Antes de imprimir pense em seu compromisso com o Meio Ambiente
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a