Opa...


Cuidado com esse tipo de situacao.
Observa esse código...

Evita variaveis e permite ter somente uma saida a funcao...


Tenta fazer mais claro e coeso pra vc nao ter problemas no futuro...

DECLARE
  v_idcarro integer;
  v_zerokm boolean;
  v_vvenda numeric(8,2);
  v_retorno numeric(8,2);
BEGIN
*
  /* 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 */

  /* 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  */


/*  faz o calculo com o coalesce()  para evitar um NULL estragando seus
calculos  */
     v_retorno :=  (v_vvenda - custo_total(v_idcarro) ) * *COALESCE*(
( *SELECT
*v.comissao *FROM *public.vendedor v *WHERE *v.idvendedor = v_idvend *LIMIT
*1), 0 );
  ELSE

     v_retorno :=  (v_vvenda * v_c_vend);
  END IF;

RETURN(  v_retorno )  ;

END;






2009/10/1 Bruno Carneiro <[email protected]>

>
>
>
> Osvaldo Kussama wrote:
> >
> >
> > Tente:
> > SELECT carro FROM venda WHERE idvenda = p_idvenda INTO v_idcarro;
> > o mesmo para os demais campos/SELECT.
> >
> >
>
>
> Era exatamente isso! Obrigado. INTO no final...
>
> Eu também tinha tentado com parenteses e não deu.
>
> Obrigado a todos!
> --
> View this message in context:
> http://www.nabble.com/Atribuir-valor-escalar-retornado-de-um-SELECT-em-plpgsql-tp25704399p25704788.html
> Sent from the PostgreSQL - Brasil mailing list archive at Nabble.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