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
