Escolar Documentos
Profissional Documentos
Cultura Documentos
Introdução
Estrutura
Estrutura -
Cursor
Estrutura -
Condicionais
Banco de Dados II
Estrutura -
Repetição Gestão da Tecnologia da Informação
Procedimento
(Procedure)
Função
(Function) Dr. Celso Luiz de Souza
Gatilhos
(Trigger)
IF Sudeste MG
1/34
Banco de Dados II
Introdução 2 Introdução
Estrutura
Estrutura -
Estrutura
Cursor
Estrutura -
Estrutura - Cursor
Condicionais
Estrutura -
Estrutura - Condicionais
Repetição
Estrutura - Repetição
Procedimento
(Procedure)
Função
(Function) 3 Procedimento (Procedure)
Gatilhos
(Trigger)
4 Função (Function)
5 Gatilhos (Trigger)
2/34
Banco de Dados II
Introdução
Estrutura
Estrutura -
Cursor
Um Stored Procedure constituem em um segmento de instruções declarativas em SQL
Estrutura -
Condicionais
que são armazenadas no catálogo do banco de dados.
Estrutura -
Repetição
Um procedimento armazenado pode ser invocado ou chamado por acionadores por outros
Procedimento procedimentos e aplicativos de outras linguagens como Java, Python, PHP.
(Procedure)
São 3 tipos de procedimentos armazenados:
Função
(Function) • Procedimentos (Stored procedures);
Gatilhos
(Trigger) • Funções (Functions);
• Gatilhos (Triggers).
4/34
Banco de Dados II
Introdução
Estrutura
Estrutura -
Cursor
PL/SQL (Procedural Language/SQL) blocos estruturados de código e comandos são uma
Estrutura -
Condicionais
extensão da SQL, que incorpora recursos de linguagens de programação procedurais.
Estrutura -
Repetição
Essa linguagem permite construir dos SQL para acesso e manipulação da base de dados.
Procedimento Estrutura de bloco programavél em SQL:
(Procedure)
Função
• DECLARE variáveis, cursores, exceções definidas pelo usuário
(Function)
• BEGIN instruções SQL e instruções PL/SQL
Gatilhos
(Trigger)
• EXCEPTION ações a serem desempenhadas quando ocorrem erros
• END finalizar
5/34
Banco de Dados II
Introdução
Operadores, operação e a prioridade (de cima para baixo):
Estrutura
Estrutura - 1 ** , NOT (exponenciação, negação lógica)
Cursor
Estrutura -
Condicionais 2 + , - (identidade, negação)
Estrutura -
Repetição 3 * , / (multiplicação, divisão)
Procedimento
(Procedure) 4 + , - , || (adição, subtração, concatenação)
Função
(Function) 5 = , != , < , > , <= , >= , (comparação)
Gatilhos
(Trigger)
6 LIKE, IS NULL, (comparação)
7 BETWEEN, IN (comparação)
8 AND (conjunção)
9 OR (disjunção)
6/34
Banco de Dados II
Introdução
Estrutura
Estrutura -
Cursor
Estrutura -
Condicionais
Um bloco não é uma unidade de transação. Os comandos COMMIT, SAVEPOINT e
Estrutura -
Repetição
ROLLBACK são independentes dos blocos, mas podem ser emitidos em um bloco.
Procedimento
(Procedure)
PL/SQL não suporta instruções em DDL (Data Definition Language) como, por exemplo,
Função CREATE TABLE, ALTER TABLE ou DROP TABLE.
(Function)
Gatilhos PL/SQL não suporta instruções em DCL (Data Control Language) como, por exemplo,
(Trigger)
GRANT ou REVOKE.
9/34
Banco de Dados II
Introdução
Estrutura
Estrutura -
Cursor
Estrutura -
Condicionais
Estrutura - Cursor é uma área de memória na qual um comando SQL é analisado e executado.
Repetição
Procedimento
Há dois tipos de cursores:
(Procedure)
• Cursores implícitos: gerenciado automaticamente pelo PL/SQL.
Função
(Function) • Cursores explícitos: declarado pelo programador
Gatilhos
(Trigger)
10/34
Banco de Dados II
Introdução
Estrutura
Estrutura -
Cursor Atributos do Cursor implícito:
Estrutura -
Condicionais
Estrutura -
• SQL%ROWCOUNT: valor inteiro representando o número de linhas afetadas pela
Repetição
última instrução SQL executada.
Procedimento
(Procedure)
• SQL%FOUND: atributo booleano contendo TRUE se pelo menos uma linha foi
Função
(Function) afetada pela última instrução SQL, e FALSE, caso contrário.
Gatilhos
(Trigger)
• SQL%NOTFOUND: atributo booleando contendo TRUE se nenhuma linha foi
afetada pela última instrução SQL, e FALSE, caso contrário.
11/34
Banco de Dados II
12/34
Banco de Dados II
13/34
Banco de Dados II
14/34
Banco de Dados II
Introdução
WHILE c o n d i c a o LOOP
Estrutura
Estrutura - instrucao1 ;
Cursor . . .
Estrutura -
Condicionais END LOOP ;
Estrutura -
Repetição
Procedimento
O loop é repetido enquanto a condição for verdadeira.
(Procedure)
Função . . .
(Function)
v_cont := 0 ;
Gatilhos
(Trigger)
WHILE v_cont < 10 LOOP
INSERT INTO . . .
v_cont := v_cont + 1 ;
END LOOP ;
15/34
Banco de Dados II
Introdução
Estrutura
Estrutura -
Cursor Stored procedures
Estrutura -
Condicionais
Estrutura -
São rotinas definidas no SGBD, são identificadas pelo nome no qual podem ser invoca-
Repetição
das(chamadas). Em geral pode executar uma série de instruções, receber parâmetros e
Procedimento
(Procedure) retornar valores.
Função
(Function)
Permitem a implementação de regras de negócio a nível de servidor de banco de dados.
Gatilhos
(Trigger)
Fornecem um mecanismo eficiente de reutilização de código. Aumentam a performance
de aplicativos cliente-servidor, ao diminuir o tráfego de rede.
16/34
Banco de Dados II
Introdução
Estrutura
Estrutura -
DELIMITER
Cursor CREATE PROCEDURE nome_procedimento ( p a r a m e t r o s )
Estrutura -
Condicionais BEGIN
Estrutura -
Repetição /∗CORPO DO PROCEDIMENTO∗/
Procedimento
END
(Procedure) DELIMITER ;
Função
(Function)
Gatilhos
Para excluir um procedimento criado
(Trigger)
DROP PROCEDURE nome_procedimento ;
Parâmetros: (MODO nome TIPO, MODO nome TIPO, MODO nome TIPO)
17/34
Banco de Dados II
Introdução
Estrutura
Modo dos parâmetros:
Estrutura -
Cursor • IN: parâmetro de entrada (recebe um valor na chamada). O parâmetro passado
Estrutura -
Condicionais pode receber uma expressão, uma constante ou uma variável.
Estrutura -
Repetição
• OUT: parâmetro de saída (retorna um valor na chamada). O parâmetro passado
Procedimento
(Procedure) deve ser uma variável.
Função
(Function)
• INOUT: parâmetro de entrada e saída (recebe e retorna um valor na chamada). O
Gatilhos parâmetro passado deve ser uma variável.
(Trigger)
18/34
Banco de Dados II
19/34
Banco de Dados II
Introdução
Estrutura
Estrutura -
Cursor
Estrutura -
Condicionais
Resposta do Exercício.
Estrutura -
Repetição c r e a t e p r o c e d u r e r e a j u s t e S a l D e p t o ( i n p e r c i n t , i n nomeDepto v a r c h a r ( 2 0 ) )
Procedimento begin
(Procedure) UPDATE i n s t r u t o r
Função SET s a l a r i o = s a l a r i o ∗ ( 1 + p e r c / 1 0 0 )
(Function)
WHERE nome_dept = nomeDepto ;
Gatilhos
(Trigger)
end //
20/34
Banco de Dados II
Introdução
Estrutura
Estrutura -
Cursor CREATE FUNCTION f u n c t i o n _ n a m e ( param1 , param2 , â )
Estrutura - RETURNS d a t a t y p e
Condicionais
Estrutura - [NOT] DETERMINISTIC
Repetição
BEGIN
Procedimento
(Procedure) ....
Função
END ;
(Function)
Gatilhos
(Trigger) Chamando a função:
s e l e c t nome_funcao ( p a r a m e t r o ) ;
22/34
Banco de Dados II
Introdução
Estrutura
Exemplo de um procedimento para dizer Hello a uma pessoa!
Estrutura -
Cursor CREATE FUNCTION h e l l o ( s v a r c h a r ( 2 0 ) ) RETURNS v a r c h a r ( 5 0 )
Estrutura -
Condicionais DETERMINISTIC
Estrutura - begin
Repetição
Procedimento
RETURN CONCAT( ’ H e l l o , ’ , s , ’ ! ’ ) ;
(Procedure) end
Função
(Function)
Gatilhos
Chamando a função:
(Trigger)
select h e l l o ( ’ Maria ’ ) ;
Exercício: Faça uma função que retorne a media salarial de um determinado departa-
mento passado na chamada.
23/34
Banco de Dados II
Introdução
Estrutura
Estrutura -
Cursor Resposta do Exercício.
Estrutura -
Condicionais
Estrutura -
CREATE FUNCTION M e d i a S a l a r i o ( nomeDepto v a r c h a r ( 2 0 ) ) RETURNS d o u b l e
Repetição DETERMINISTIC
Procedimento BEGIN
(Procedure)
d e c l a r e v_media d o u b l e ;
Função
(Function)
SELECT AVG( s a l a r i o ) INTO v_media FROM i n s t r u t o r WHERE nome_dept =
nomeDepto ;
Gatilhos
(Trigger) RETURN v_media ;
END
24/34
Banco de Dados II
RETURN ( msg ) ;
END
São João del-Rei
25/34
Banco de Dados II
Introdução
Estrutura
Estrutura -
Cursor
Estrutura -
Condicionais
Estrutura - Outro Exemplo (2/2): Chamando a função em uma consulta.
Repetição
Procedimento SELECT nome , L e v e l I n s t r u t o r ( s a l a r i o ) a s N i v e l
(Procedure)
FROM i n s t r u t o r
Função
(Function)
ORDER BY N i v e l ;
Gatilhos
(Trigger)
26/34
Banco de Dados II
Introdução
Estrutura
Estrutura -
Trigger
Cursor
Estrutura - Gatilho é um tipo especial de procedimento, associado a uma tabela, que é disparado auto-
Condicionais
Estrutura - maticamente por um evento de modificação de dados (INSERT, UPDATE, DELETE)
Repetição
Procedimento
em uma determinada tabela.
(Procedure)
Usos comuns de triggers:
Função
(Function)
• Manter regras de integridade além de uma simples integridade referencial.
Gatilhos
(Trigger) • Implementar regras de negócio complexas no banco de dados.
• Aplicar regras de segurança.
• Manter registros de auditoria.
27/34
Banco de Dados II
29/34
Banco de Dados II
Introdução
Estrutura
Estrutura - Uma combinação de sincronismo, evento e tipo de disparo pode levar até a 12 tipos
Cursor
Estrutura -
Condicionais
diferentes de triggers associados a uma mesma tabela.
Estrutura -
Repetição Estrutura de uma gatilho:
Procedimento
(Procedure) CREATE TRIGGER n o m e _ t r i g g e r s i n c r o n i s m o _ t r i g g e r t i p o _ e v e n t o
Função ON nome_tabela
(Function)
FOR EACH ROW
Gatilhos BEGIN
(Trigger)
...
END ;
30/34
Banco de Dados II
Logo, deseja-se que toda alteração que ocorra no salário de um instrutor seja registrado
na tabela de auditoria. Tem-se que o sincronismo será após (BEFORE), e o evento será
de atualização (UPDATE). Qual seria o gatilho (TRIGGER)?
São João del-Rei
31/34
Banco de Dados II
Introdução
Gatilho projetado:
Estrutura
Estrutura - DELIMITER
Cursor
Estrutura -
CREATE TRIGGER b e f o r e _ i n s t r u t o r _ u p d a t e
Condicionais BEFORE UPDATE ON i n s t r u t o r
Estrutura -
Repetição FOR EACH ROW
Procedimento BEGIN
(Procedure) INSERT INTO i n s t r u t o r A u d i t
Função SET a c a o = ’ u p d a t e ’ ,
(Function)
i d I n s t r u t o r = OLD . i d ,
Gatilhos s a l a r i o A n t i g o = OLD . s a l a r i o ,
(Trigger)
s a l a r i o A t u a l = NEW. s a l a r i o ,
d a t a M o d i f i c a c a o = NOW( ) ;
END
DELIMITER ;
32/34
Banco de Dados II
Introdução
Estrutura
Estrutura -
Cursor Testando: Vamos modificar o salario de um instrutor, por exemplo, o de id = 28097.
Estrutura -
Condicionais
Estrutura -
Para validar o teste vamos seguir as seguintes etapas:
Repetição
Procedimento
(Procedure)
1 Lista o salário do instrutor id = 28097;
Função
(Function)
2 Atualizar o salário do instrutor para o valor de 40.000;
Gatilhos 3 Lista novamente o salário do instrutor id = 28097, modificou? (Sim);
(Trigger)
4 Lista os dados da tabela instrutorAudit.
33/34
Banco de Dados II
Introdução
Estrutura
1 - Lista o salário do instrutor id = 28097
Estrutura -
Cursor select salario from i n s t r u t o r w h e r e i d = 2 8 0 9 7 ;
Estrutura -
Condicionais
Estrutura -
Repetição
2 - Atualizar o salário do instrutor para o valor de 40.000
Procedimento UPDATE i n s t r u t o r SET s a l a r i o = 4 0 0 0 0 . 0 0 WHERE i d = 2 8 0 9 7 ;
(Procedure)
Função
(Function)
3 - Lista novamente o salário do instrutor id = 28097.
Gatilhos select salario from i n s t r u t o r w h e r e i d = 2 8 0 9 7 ;
(Trigger)
34/34