[firebase-br] RES: PROCEDURE

Eduardo Jedliczka (TeamFB) jedyfb em gmail.com
Ter Set 26 08:38:02 -03 2006


Também não sou fã do uso "exagerado" de SP, pois o custo de manutenção da 
base de dados cresce drasticamente, isto no caso das alterações de estrutura 
que cedo ou tarde somos forçados a realizar, por culpa do crescimento 
natural dos sistemas, ou das inúmeras alterações para atender a tão confusa 
e controversa legislação (principalmente tributária e comercial) brasileira.

Para mim, SP é para agilizar cálculos e operações complexas. Tipo montar um 
saldo diário (descrição, débito, crédito e saldo), buscar furos em códigos 
(como vimos recentemente na lista), totalizar as bases de impostos onde 
várias tabelas são consultadas, Sistemas de vendas que trabalham com reserva 
de estoque (a operação precisa ser rápida, então dá para colocar a chamada 
como auto-commit). Mas criar SP simplesmente para trazer dados de um único 
select, sem qualquer processamento só para ter uma "view" com parâmetros, 
acho completamente desnecessáiro.

No FB 1.X já havia muitos recursos que tornavam este excesso de SPs pouco 
necessárias. No FB 2, graças aos recursos de nested select (select from 
select) e execute block, acaba sendo completamente desnecessário manter 
muitas SPs no banco.

O ganho de performance em termos de compilação da SP é o mesmo que deixar 
uma query preparada e usar várias vezes, ou seja, do ponto de vista prático 
é muito pequeno (mas ajuda).

======================
Eduardo Jedliczka
Membro do TeamFB - FireBase
Apucarana - PR
======================
"Posso não concordar com nada do que dizes.
Mas defenderei até a morte o seu direito de dizê-lo"
(Voltaire 1694-1778)
----- Original Message ----- 
From: "Fuzari" <fuzari em task.com.br>
To: <renan em safetech.inf.br>; "FireBase" <lista em firebase.com.br>
Sent: Tuesday, September 26, 2006 8:10 AM
Subject: Re: [firebase-br] RES: PROCEDURE


Olá a todos,

Concordo com a opiniao do colega Renan e outros q se utilizam somente de
selects (também é o meu caso).

A vantagem em se utilizar procedures e views, tecnicamente, trata-se da
verificação de sintáxe (se o comando está escrito da forma correta) e de
semântica ( se a ordem dos comandos está correta) dos comandos bem como a
compilação antes da execução do script.

Quando se aplica um select no componente, ao ativá-lo, o SGDB primeiro faz a
verificação da sintáxe, em seguida da semântica, compila o script e executa.

Com as procedures e views, o SGDB ja efetuou as três primeiras etapas
(sintáxe, semântica e compilação) e já executa o script. Depedendo do
tamanho do banco é uma excelente alternativa.

Abraços a todos

Fuzari.



----- Original Message ----- 
From: "Renan de Oliveira" <renan em safetech.inf.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Tuesday, September 26, 2006 7:18 AM
Subject: Re: [firebase-br] RES: PROCEDURE


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



______________________________________________
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 





Mais detalhes sobre a lista de discussão lista