Академический Документы
Профессиональный Документы
Культура Документы
SGDB
Servidor BD
Interface do Usuário
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;
Aplicação
(Cliente) Tabelas
{Call }
Stored Procedure Tabelas
Tabelas
Banco de Dados
Exemplo:
1) INSERT INTO clientes (cod, nome, dt_nasc) values ( geraCodigo(1),’FULANO
DE TAL,to_date(’01/01/1972’,’dd/mm/yyyy’)
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?
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