[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