[firebase-br] RES: RES: PROCEDURE

Jorge Luis Bublitz bublitz em tre-mt.gov.br
Ter Set 26 09:31:52 -03 2006


A maior vantagem do uso de Stored Procedures e Triggers é a redução no
tráfego de rede, já que são executadas pelo banco na máquina servidora.
Outro aumento de desempenho é no fato que cada vez que a aplicação cliente
envia um comando SQL para o servidor, o comando tem que ser “parsed”, ou
seja, analisado gramaticalmente, submetido ao otimizador para formulação de
um plano de execução. SP e Triggers são analisadas, otimizadas e armazenadas
em uma forma executável no momento em que são adicionadas ao banco de dados.
A partir do momento que uma SP/Trigger não tem que ser analisada e otimizada
cada vez que é chamada, ela é executada mais rapidamente que um comando SQL
equivalente.
A manutenção também é facilitada porque você pode alterar uma SP/Trigger sem
ter que alterar ou mesmo recompilar as aplicações que acessam o banco. Há
também um aumento de segurança uma vez que as SP/Trigger podem acessar
tabelas que o usuário não tem direito de fazê-lo. Por exemplo, suponha que
um usuário precise rodar um relatório que mostra o total de vendas de um
período. Embora essas informações venham da tabela de vendas, você não quer
que este usuário tenha acesso às vendas individuais de cada vendedor. A
solução é fazer uma SP que emita essa informação resumida. Você pode então
dar direito ao usuário de executar a SP e ele não precisa ter direitos de
sobre a tabela de vendas.

[]s,

Jorge Luis Bublitz
Analista Desenvolvedor
Chefe da Seção de Análise e Desenvolvimento – SAD
Coordenadoria de Soluções Corporativas – CSC
Secretaria de Tecnologia da Informação – STI
 
"No que diz respeito ao empenho, ao compromisso, ao esforço, à dedicação,
não existe meio termo. Ou você faz uma coisa bem feita ou não faz." 
Ayrton Senna da Silva
-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Carlos Wilson
Enviada em: segunda-feira, 25 de setembro de 2006 20:33
Para: 'FireBase'
Assunto: [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


-- 
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.1.405 / Virus Database: 268.12.8/455 - Release Date: 9/22/aaaa





Mais detalhes sobre a lista de discussão lista