[firebase-br] RES: PROCEDURE
Cristiano Rebonatto
crebonatto em upf.br
Ter Set 26 08:30:21 -03 2006
Alguns motivos básicos :
Para ter aplicações multiplataformas
Separar a regra de negócio
Facilitar manutenção
Grande aumento de performance
Muitos soluções só são possíveis através de procedures
Controlar acesso
Carlos Wilson escreveu:
> 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
>
>
--
+-----------------------------------------------------------+
Cristiano Rebonatto
Setor de Análise e Desenvolvimento
Divisão de Tecnologia da Informação
Universidade de Passo Fundo
Passo Fundo - RS
+-----------------------------------------------------------+
Mais detalhes sobre a lista de discussão lista