Академический Документы
Профессиональный Документы
Культура Документы
ORACLE ± PL/SQL
Y
ORACLE ± PL/SQL
Stored Procedures
Grupo de comandos SQL e PL/SQL que executam uma
determinada tarefa. Uma stored procedure precisa ser
chamada a partir de um programa ou ser executada
manualmente pelo usuário.
Uma stored procedure é totalmente portátil dentro das
plataformas nas quais o oracle é executado.
O
ORACLE ± PL/SQL
Ä
ORACLE ± PL/SQL
±
ORACLE ± PL/SQL
Cursor
Quando o oracle processa um comando SQL, ele abre uma
área de memória chamada Private SQL Area, que armazena
informações responsáveis pela execução do comando. Um
identificador para essa área ± Chamado Cursor - é criado.
No SQL*Plus para selecionar registros do banco de dados,
basta um comando SELECT para que as linhas das tabelas
ou visualizações que satisfaçam os critérios especificados
sejam exibidas na tela.
]
ORACLE ± PL/SQL
ORACLE ± PL/SQL
m
ORACLE ± PL/SQL
ORACLE ± PL/SQL
Criando um cursor
A criação de um cursor envolve quatro etapas:
1- Declaração do cursor. Nesta etapa, é criado um nome para
o cursor e atribuído um comando SELECT a ele.
2- Abertura do cursor. Nessa etapa, a consulta é executada e
é determinado o número de linhas que será retornado.
3- FETCHING. Na terceira etapa, as linhas encontradas são
enviadas para o programa PL/SQL.
Y
ORACLE ± PL/SQL
YY
Baanco de Dados Oracle
cursor teste1 is
select nome_fun, cod_fun, vl_sal from func where vl_sal
between 500 and 900
order by vl_sal;
begin
dbms_output.enable;
open teste1;
loop
YO
ORACLE ± PL/SQL
YÄ
ORACLE ± PL/SQL
TRIGGERS
São rotinas ou procedures que são utilizados quando um
comando INSERT, UPDATE ou DELETE é executado em
uma tabela ou até mesmo numa visão.
Um trigger é executado automaticamente sem a interferência
do usuário.
A principal aplicação de um trigger é a criação de
consistências e restrições de acesso ao banco de dados,
assim como rotinas de segurança.
Y±
ORACLE ± PL/SQL
Algumas Aplicações:
Criar o conteúdo de uma coluna derivada de outras
colunas.
Criar mecanismos de validação que envolvam pesquisas
em múltiplas tabelas.
Criar LOGS para registrar a utilização de uma tabela.
Atualizar outras tabelas em função de inclusão ou
alteração da tabela atual.
YV
ORACLE ± PL/SQL
Y]
ORACLE ± PL/SQL
Restrição de Uso
Uma trigger não pode executar comandos COMMIT,
ROLLBACK ou SAVEPOINT, nem tampouco chamar
procedures ou funções que executam essas tarefas.
O comando SELECT pode ser usado apenas com a cláusula
INTO.
Um trigger do tipo row-level não pode ler ou modificar o
conteúdo de uma tabela em mutação.
Y
ORACLE ± PL/SQL
Ym
ORACLE ± PL/SQL
Tipos de Trigger
1. Triggers de tabela aplicados aos comandos do tipo DML.
2. INSTEAD-OFF aplicados à visões.
3. SYSTEM EVENT aplicados no banco de dados nas
operações de startup, shutdown e erro.
4. USER EVENT aplicado a um usuário ou objeto de
esquema.
5. BEFORE e AFTER triggers.
Y
ORACLE ± PL/SQL
Componentes de um T rigger
Comando SQL que aciona o trigger
O disparo do trigger pode ser ocasionado pelo comando
SQL ou por um evento do usuário.
O
ORACLE ± PL/SQL
Trigger de Tabela
Existem dois tipos distintos de triggers que podem ser
usados em uma tabela. Um é executado apenas uma vez
quando ocorre o evento de disparo e o outro é para cada
linha da tabela processada pelo comando SQL.
OY
ORACLE ± PL/SQL
Statement-level Trigger
Esse trigger é disparado apenas uma vez.
Por exemplo: Se um comando UPDATE atualizar 15 linhas,
os comandos contidos no trigger serão executados uma
única vez, e não em cada linha processada.
Row-Level Trigger
Esse trigger tem os seus comandos executados para todas
as linhas que sejam afetadas pelo comando que gerou o
acionamento do trigger.
OO
ORACLE ± PL/SQL
OÄ
ORACLE ± PL/SQL
O±
ORACLE PL/SQL
Referências a Colunas
Dentro de um trigger do tipo row-level é possível acessar o
valor de um campo de uma linha. Dependendo da operação
que está sendo executada, é necessário preceder o nome
da coluna com o sufixo :ë ou :
Pois em um determinado instante pode-se obter tanto o valor
antigo como o novo valor do campo.
Para um comando INSERT, os valores dos campos que
serão gravados devem ser precedidos pelo sufixo new.
OV
ORACLE PL/SQL
O]
ORACLE PL/SQL
Exemplos:
CREATE OR REPLACE TRIGGER t_pedidos
BEFORE INSERT ON pedidos
Declare
t_val char(30);
BEGIN
t_val:= 'Parabéns Pelo Pedido';
dbms_output.enable;
dbms_output.put_line(t_val);
END;
O
ORACLE PL/SQL
PACKAGES
Um package é uma coleção de objetos de banco de dados,
como stored procedures, funções, variáveis, constantes e
cursores. Ele contém subprogramas que podem ser
chamados a partir de um trigger, uma procedure ou uma
função. É um aliado do desenvolvedor, pois permite
organizar melhor os componentes de um sistema em
módulos.
O
ORACLE PL/SQL
Ä
ORACLE PL/SQL
function f_func
(f_vl_sal func.vl_sal%type)
return number
is
tot_ped number;
begin
select count(*) into tot_ped from func where vl_sal =
f_vl_sal;
return tot_ped;
end;
end;
ÄÄ