Вы находитесь на странице: 1из 15

Utilização dos Métodos Armazenados no

SGDB

Aluno: Moacir M. Viana


Introdução

O que são esses métodos?


 Para que servem?
 Vantagens x Desvantagens
Introdução

 Aumento do poder computacional


– Máquinas Clientes performance próxima dos servidores
 Aplicações divididas. Boa idéia?!

Servidor BD
Interface do Usuário

 Aplicativos permitem criar, atualizar, extrair informações


 Constituídos de unidades independentes, repositório local de
procedimentos e comandos.
 Problemas de instalação/Manutenção
– Alteração de regras – re-compilação e redistribuição
Distribuição da Consistência e Integridade dos Dados

 Regras no banco – consistência e integridade


– Independente de ferramenta de acesso
 Regras em um único local

Regras espalhadas

Stored Procedure
Functions
Triggers
Vantagens
 Compartilhamento de funcionalidades
 Evita redundância de código
 Ganho de performance (I/O reduzido)
 É mais estável do que uma ferramenta de
programação
Stored Procedure
 Um programa compilado e que pode executar
comando SQL.
 Aplicações cliente/servidor transações on-line
Procedure UNIDADE_SERVICO_INCLUIR
(
Arg_zona in unidade_servico.zona%TYPE, Arg_local in unidade_servico.local%TYPE,
Arg_Tipo in unidade_servico.codigo_tipo_us%TYPE
)
is
vDesc local_votacao.descricao%TYPE; vEnd local_votacao.endereco%TYPE;
vMunic zona_eleitoral.municipio%TYPE; vCodigo_ele data_eleicao.codigo_el%type;
begin
select codigo_el into vCodigo_ele from data_eleicao where ativo=1;
select descricao,endereco into vDesc, vEnd from local_votacao
where zona=Arg_zona and local=Arg_local and codigo_el=vCodigo_ele;

select municipio into vMunic from zona_eleitoral where zona=Arg_zona;


Banco Dados
set transaction read write;
INSERT INTO unidade_servico (codigo_us,descricao, endereco,
municipio, zona, local, codigo_el,codigo_tipo_us )
VALUES ( PROX_UNIDADESERVICO.nextval, vDesc, vEnd, vMunic, Arg_zona,
Arg_local, vCodigo_ele, Arg_tipo );
commit;
exception
when others then
rollback;
raise_application_error(-20000,'Harpia - Não é possível criar registros');
end;
Stored Procedure
 Manipulação direta dos dados sem
intervenção do usuário

Aplicação
(Cliente) Tabelas
{Call }
Stored Procedure Tabelas
Tabelas

Banco de Dados

 Segurança – acesso somente a executar SP


e não ter acesso as demais tabelas.
Stored Procedure – Quando usar?

 Executa as mesmas consultas


 Operação requer o processamento de grande
número de linhas (caras em termos de tráfego na rede).
 Vários aplicativos acessam a mesma consulta
 Acessar uma consulta em um loop
Functions
 Recebem parâmetros de entrada e devolvem
um valor em seu nome
 Podem ser ativadas a partir de um
comandos SQL do tipo DML

Exemplo:
1) INSERT INTO clientes (cod, nome, dt_nasc) values ( geraCodigo(1),’FULANO
DE TAL,to_date(’01/01/1972’,’dd/mm/yyyy’)

2) SELECT Nome, Salario, fComissao(Salario,comissao) comissao FROM


Vendendores
Triggers
 Executa unidades de programas automaticamente toda
vez que uma instrução SQL/DML for aplicado

Before After
Insert Insert

Update Update
Tabela T
Delete Delete

Banco de Dados
Triggers
 Exemplo: Sistema de vendas
Ações acontecem como conseqüências de outras

Vendas Produtos
Qtd | CodProd | Vlr Cod | Descrição | Qtd | Vlr
Procedimento baixa_estoque(){
se nao Vendas.eof faça
se Produtos.encontrou(Vendas.codProd) entao
Produtos.Qtd <- Produtos.Qtd – Vendas.Qtd;
fim-se
Vendas.ProxRegistro();
fim-se
}
CREATE OR REPLACE TRIGGER tg_BaixaEstoque
AFTER INSERT ON Vendas FOR EACH ROW
declare
Vendas
Begin
Banco de Dados
UPDATE produtos set qtd = qtd - :NEW.Qtd
WHERE cod = :NEW .CodProd
Produtos
End; --ativado implicitamente
Triggers - Cuidados
 Não criar triggers que dupliquem regras já
definidas em Constraints
 Alguns bancos recomendas limitar os
códigos
 Ter cuidado ao criar as triggers que
disparam sob uma instrução UPDATE.
– Dispara a trigger n vezes, ocasionando overflow
de memória ou resultados errôneos
Por que utilizar Procedures e Triggers?

 Permitem o servidor realizar operações complexas sem envolver o


cliente
 Podem ser compartilhados por todas as aplicações cliente que
acessam o banco
 Tarefas freqüentemente utilizadas são executadas mais
rapidamente, são armazenadas e compiladas automaticamente
 Reduzem o tráfego na rede
– Processamento pesado no servidor, usuários remotos que trabalham
com conexões lentas
 Triggers são executadas automaticamente, podendo ser utilizadas
para fazer auditoria sobre o acesso ao banco. Controlam a
integridade referencial de maneira mais facilitada
Desvantagens
 Pode ser um trabalho muito árduo e
demorado nessa linha de trabalho
 As linguagens são proprietárias
 Portabilidade x Eficiência.
– O que é melhor colocar no SGDB e o que é
melhor ficar fora?
Conclusão

 Analisar
a política adota de desenvolvimento
 É uma questão de planejamento e análise
– Não é questão de conveniência.
 Precisam ser analisados por um profissional
da área de banco de dados
 Proporcionar funcionalidades e performance

Вам также может понравиться