isso mesmo, tambem faria Fabrízio.

Estive simulando uma forma de fazer essa procedure e vi que da pra fazer em
um select into todo o processo...
mas, como nosso amigo esta estudando o postgresql, melhor ele se aprofundar
no postgresql que ele descobre por si mesmo, né.



2009/10/2 Fabrízio de Royes Mello <[email protected]>

>
>
> 2009/10/1 Jose adriano Alves <[email protected]>
>
>>
>> <corte>
>>
>> *  /* isso ja evita fazer 3 selects */
>>
>>    select into* v_idcarrro
>>                   , v_vvenda
>>                   , v_idvend *
>>     from *(  *select *v.carro, v.valor, v.vendedor *from *public.venda v
>> *where *v.idvenda = p_idvenda  );      /*  seta os valor na variavel a
>> partir do select */
>>
>
> Não há necessidade do Sub-Select... nesse caso basta:
>
> *select *v.carro, v.valor, v.vendedor
> *   into* v_idcarrro, v_vvenda, v_idvend
>   *from *public.venda v
> *where *v.idvenda = p_idvenda
>
>
> Olhando melhor as tuas queries não resolveria um SQL com algumas junções:
>
> SELECT venda.carro,
>        carro.zero_km,
>        COALESCE(venda.valor, 0) as valor,
>        COALESCE(vendedor.comissao, 0) as comissao
>   INTO v_idcarro,
>        v_zerokm,
>        v_vvenda,
>        v_c_vend
>   FROM venda
>        LEFT JOIN carro    ON carro.idcarro       = venda.carro
>        LEFT JOIN vendedor ON vendedor.idvendedor = venda.vendedor
>  WHERE venda.idvenda = p_idvenda;
>
>
> Pelo conteúdo da tua PL creio que o SELECT acima traria todas as
> informações necessárias...
>
>
>
>>   /* como voce vai usar somente essa vez a verificacao de carro zero, pode
>> inserir diretamente a verificacao  */
>>   IF ( *SELECT *c.zero_km *FROM *public.carro c *WHERE *c.idcarro =
>> v_idcarro *LIMIT *1) = TRUE THEN   /* quando nao usar agregacao ( sum,
>> count, avg, etc) usa o limit 1 por exemplo, ou aplique a agragacao
>> necessaria  */
>>
>>
> Eu usaria o EXISTS nesse caso:
>
> IF EXISTS(SELECT 1 FROM public.carro c WHERE c.idcarro = v_idcarro) THEN
> ...
>
>
>
> Cordialmente,
>
> --
> Fabrízio de Royes Mello
> >> Blog sobre TI: http://fabriziomello.blogspot.com
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> 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: [email protected]
MSN: [email protected]



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
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a