[firebase-br] RES: PROCEDURE

Renan de Oliveira renan em safetech.inf.br
Ter Set 26 07:18:11 -03 2006


Olha, eu tambem tenho esse mesmo problema... trabalho muito tempo com
oracle, mas tambem uso firebird, e tenho enorme dificuldade em compreender
esse uso elevado de procedures do pessoal no firebird. Onde na grande
maioria dos casos, um simples select, insert, update ou delete resolveria
sem problemas.


Renan de Oliveira
Safetech Informática
(51) 3529-3870
----- Original Message ----- 
From: "Carlos Wilson" <cwfsa em yahoo.com.br>
To: "'FireBase'" <lista em firebase.com.br>
Sent: Monday, September 25, 2006 9:33 PM
Subject: [firebase-br] RES: PROCEDURE


Eu gostaria de entender porque vocês usam tantas procedures, se quase tudo
pode ser feito por select. Tenho um sistema de Vendas e Crediário e tenho
apenas 2 procedures, e no meu sistema eu tenho relatórios estatísticos,
gráficos e outros. Digo isso porque um dos primeiros artigos que li sobre
firebird foi para não abusar das procedures, então se houver alguma vantagem
real em usar procedures eu gostaria de saber.

Grato.

Carlos Wilson.

-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Jeter Rabelo Ferreira
Enviada em: quarta-feira, 20 de setembro de 2006 13:53
Para: FireBase
Assunto: Re: [firebase-br] PROCEDURE

Olá Caçula, faz o seguinte:

FOR SELECT DISTINCT P.COD_PRODUTO, MAX(P.QUANTIDADE)
FROM T_PROD_PEDIDO P
WHERE P.DT_EMISSAO BETWEEN :DAT1 AND :DAT2
GROUP BY P.COD_PRODUTO
INTO :CODIGO, QUANT
DO
begin
  SELECT VR_UNIT FROM T_PRODUTO T
  WHERE T.COD_PRODUTO=:CODIGO
  INTO VALOR;
  suspend;
end;

Obs: Não testei.

[]'s
Jéter Rabelo Ferreira




Em 20/09/06, Caçula <info em cacula.ind.br> escreveu:
>
> Bom dia lista.
>
> Estou desenvolvendo uma procedure, para selecionar os produtos mais
> vendidos. Estou fazendo uma seleção da tabela de produtos do pedido, mas
> também preciso do valor unitário que consta no cadastro do produto, mas
> não estou conseguindo. Veja como ficou
>
> CREATE PROCEDURE PRODUTOS (
>    DAT1 DATE,
>    DAT2 DATE)
> RETURNS (
>    CODIGO INTEGER,
>    QUANT NUMERIC(15,3),
>    VALOR NUMERIC(15,3))
> AS
> begin
> /* Procedure Text */
> FOR SELECT P.COD_PRODUTO, D.VR_UNIT, MAX(P.QUANTIDADE) FROM
> T_PROD_PEDIDO P, T_PRODUTO D
> WHERE P.DT_EMISSAO BETWEEN :DAT1 AND :DAT2
> GROUP BY P.COD_PRODUTO
> ORDER BY MAX(P.QUANTIDADE) DESC INTO :CODIGO, :VALOR, :QUANT
> DO
> suspend;
> end
>
> Se deixar assim, dá erro, e se colocar o D.VR_UNIT no GROUP BY, ele me
> retorna informação errada. Como que faço pra agrupar por código de
> produto, e conseguir pegar o VR_UNIT da tabela de produto.
>
> Obrigado
>
> Alexandre Gonçalves
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa



_______________________________________________________
Novidade no Yahoo! Mail: receba alertas de novas mensagens no seu celular.
Registre seu aparelho agora!
http://br.mobile.yahoo.com/mailalertas/




______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa






Mais detalhes sobre a lista de discussão lista