Equipe de monitoria Aula prática 3.  Caso de estudo  Igualando situações  Cursor  Function  Procedure  Trigger  Package  Surpresa...

Slides:



Advertisements
Apresentações semelhantes
Criando aplicações WEB
Advertisements

O Comando DROP INDEX Para eliminar um índice definido sobre uma tabela, utilize: Drop Index on ; Ex: No Access: Drop Index X on.
Estudo de Caso, modelo Oracle 10g
Gerenciamento de Dados e Informação Estudo de caso – PL/SQL
Banco de Dados Prof. Antonio.
Triggers Renata Viegas.
BANCO DE DADOS EM APLICATIVOS WEB Aula 13
Banco de Dados SQL TRIGGERS (Gatilhos)
SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados 2º Semestre – 2010 Pedro Antonio Galvão Junior Fone:
SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados 2º Semestre – 2010 Pedro Antonio Galvão Junior Fone:
SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados II 1º Semestre – 2010 Pedro Antonio Galvão Junior Fone:
Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos.
Restrições de Integridade
Sumário 1 Processamento de Consultas 2 Introdução a Transações
Prof. José Fernando Rodrigues Júnior Pacotes Material original: Profa. Elaine Parros Machado de Sousa SCC Bancos de Dados e Suas Aplicações.
SCC Bancos de Dados e Suas Aplicações
SCC Bancos de Dados e Suas Aplicações
SCC Bancos de Dados e Suas Aplicações
9 Controle de fluxo Seqüenciadores. Jumps. Escapes. Exceções.
7 Abstração Genérica Unidades genéricas e instanciação.
Triggers e StoreProcedures
Banco de dados Profª Kelly Medeiros.
Paradigmas de programação
Equipe de monitoria Aula prática 2. Apresentação do caso de estudo Conceitual Lógico Algumas informações iniciais Consultas e exercícios Surpresa... =)
Equipe de monitoria Aula prática 4.  Tipos  Tabela de Objetos  Herança  Métodos  Referências  Coleções  Composição de coleções  Conectividade.
Sub-programas. Mecanismo de composição de programas Sub-programa está para peça de LEGO assim como um programa está para a construção.
Monitoria GDI Aula Prática
Monitoria GDI Aula Prática
Aula R Prof. Naércio Filho Técnico em Informática
PL/SQL, Procedures e Funções
Monitoria GDI Aula Prática
Capítulo 6: Integridade e Segurança
Equipe de monitoria Aula prática 4
Primeira aula de PL/SQL Parte II
Especialização em Tecnologia da Informação
Monitoria GDI Aula Prática
FTIN FORMAÇÃO TÉCNICA EM INFORMÁTICA Módulo de Programação Prof. Flávio Dantas.
Oracle 9i: SQL e PL/SQL Bruno Celso Cunha de Freitas
III – O Modelo OR Estudo de Caso, modelo Oracle 10g.
III – Oracle 10g Herança.
SEQUENCE, PROCEDURE, FUNÇÃO, TRIGGER
Monitoria GDI Aula Prática
Aula Prática PL Profa. Bernadette Farias Lóscio
Desenvolvendo um script SQL
BANCOS DE DADOS ATIVOS Weyler M Lopes © Especialização em Banco de Dados.
Banco de Dados Parte 04 Ceça. Ceça Moraes 2 Conteúdo  Os três níveis da arquitetura  Mapeamentos  Arquitetura cliente-servidor.
Revisão ER /SQL / PL.
Aula Prática PL/SQL Profa. Bernadette Farias Lóscio
Baseado no material do Professor Raul Paradeda
PostGres: Um Banco de Dados Orientado a Objetos
Monitoria GDI Aula Prática Aula 2: PL 1. Estudo de caso - continuação Pegar arquivo GDI.zip em Descompactar arquivo: o criacaoTabelas.SQL.
Triggers (Gatilhos) Professor Esp. Diego André Sant’Ana
Exercícios Para começar a fazer os exercícios a seguir, restaure um banco de dados que já contenha dados: Informe os comandos das resposta com o mesmo.
III – Oracle 9i Indexação. Índices Baseados em Funções É um índice baseado no valor de retorno de uma expressão ou função –A função pode ser um método.
Banco de Dados I I Comandos SQL
Conceitos de SGBD Objeto-Relacional Oracle 10g [2] Monitoria GDI André Braga, Daniel Penaforte, Domingos Ribeiro, João Pascoal, Maria Carolina.
Equipe de monitoria Aula prática 4.  Tipos  Tabela de Objetos  Herança  Métodos  Referências  Coleções  Composição de coleções  Conectividade.
7P/SI – 2010/01 Prof. Carlos Alberto Seixas. Agenda Visão Geral sobre os Conceitos e Implementação sobre SGBs MySQL Revisão das Práticas Práticas 1 e.
IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho
Equipe de monitoria Aula prática 2.  Apresentação do caso de estudo  Conceitual  Lógico  Algumas informações iniciais  Consultas e exercícios  Surpresa...
Daniel Paulo SQL Server 2014 Módulo II Daniel Paulo
VBA – Visual Basic para Aplicativos
Linguagem de definição de dados - SQL
Monitoria GDI Aula Prática Aula 1: SQL + PL 1. Estudo de caso - continuação Pegar arquivo GDI.zip em Descompactar arquivo: o criacaoTabelas.SQL.
Aula 13 - Triggers. Triggers no SGBD Postgres  Os Triggers (Gatilhos) são funções preparadas para serem disparadas no caso de alguma alteração ocorrer.
Banco de Dados II Prof: Márcio Soussa Curso de Sistemas de Informação Faculdades Jorge Amado.
2/6/2016 José Antônio da Cunha - CEFET - RN1 Programação de Banco de Dados Funções.
Transcrição da apresentação:

Equipe de monitoria Aula prática 3

 Caso de estudo  Igualando situações  Cursor  Function  Procedure  Trigger  Package  Surpresa...

 Mesmo da aula passada, para quem não terminou de gerar o banco...  Pegar arquivo BD.zip em  Descompactar arquivo: ▪ criacaoTabelas.SQL ▪ popularBD.SQL ▪ logico ▪ LOGICO.brM ▪ Modelo Logico - Aula Prática.jpg ▪ conceitual ▪ CONCEITUAL.brM ▪ Modelo Conceitual - Aula Pratica.jpg

 Criar as tabelas  Executar script em criacaoTabelas.SQL  Popular base de dados  Executar script em popularBD.SQL Observação: apenas uma pessoa por equipe realize essas tarefas para evitar exceções.

 SELECT * FROM tabs;  DESCRIBE nometabela ou DESC nometabela;  SELECT * FROM user_triggers;  SELECT * FROM user_procedures;  SELECT * FROM user_sequences;  SHOW errors;  SET serveroutput on

Definições

 Quando uma query é executada no Oracle, um result set é produzido e salvo em memória. Oracle permite ao programador acessar este result set em memória através de Cursores.  Muitas vezes, quando uma query retorna mais de uma linha como resultado, seria interessante iterar sobre cada linha e processar os dados de uma maneira diferente para elas. Cursores são úteis neste caso.

 Declarar (Declare)  Dá um nome ao cursor e o associa a uma query que retornará múltiplas linhas  Abrir (Open)  Executa a query  Acessar (Fetch)  Fechar (Close)  Encerra o processamento do cursor

 Durante os exemplos e exercícios da aula, será possível ver utilizações práticas de cursores.

Exemplos (contextualizado ou não) e exercício

 Utilizado para modularizar uma consulta, a qual pode ser utilizada em diversos locais, sem necessidade de repetição de código.  Sempre possui retorno. CREATE [OR REPLACE ]FUNCTION [(parâmetro [{IN | OUT | IN OUT}] tipo,....)] RETURN {IS | AS} BEGIN END ;

 Sem contextualização  Informadas duas datas, montar uma String de retorno contendo o período entre essas duas datas. CREATE OR REPLACE FUNCTION retornarPeriodo (dtInicial DATE, dtFinal DATE) RETURN VARCHAR2 IS retorno VARCHAR2(60); BEGIN SELECT CONCAT (dtInicial, ' a ') INTO retorno FROM DUAL; SELECT CONCAT (retorno, dtfinal) INTO retorno FROM DUAL; return retorno; END;

SELECT retornarperiodo(to_date('2008/03/15', 'yyyy/MM/dd'), to_date('2008/11/25', 'yyyy/MM/dd')) from dual;

 Criar uma função que, passada um cargo como argumento, retorne a média salarial dos funcionários com aquele cargo. CREATE OR REPLACE FUNCTION media_por_cargo (crg Funcionario.Cargo%TYPE) RETURN NUMBER IS v_media NUMBER; BEGIN SELECT AVG (salario) INTO v_media FROM funcionario F WHERE F.Cargo LIKE crg; RETURN v_media; END media_por_cargo;

 Faça uma função que recebe o nome do esporte e retorna a quantidade de atletas que praticam esse esporte.

Exemplos e exercício

 Utilizado para modularizar uma ação, a qual pode ser reutilizada diversas vezes, sem necessidade de repetição de código.  Não possui retorno. Todas as ações necessárias são realizadas dentro do corpo do procedimento CREATE [OR REPLACE] PROCEDURE [(parâmetro [{IN | OUT | IN OUT}] tipo,....)] {IS | AS} BEGIN END ;

 Crie uma Procedure que, dada uma equipe, imprima todos os títulos que ela possui. CREATE OR REPLACE PROCEDURE equipeTitulos (codigoEq EQUIPE.CODIGOEQUIPE%TYPE) IS CURSOR cur_titulos IS SELECT CodigoTit FROM DisputaEquiCamp WHERE CodigoEquipe = codigoEq; titulo DISPUTAEQUICAMP.CODIGOTIT%TYPE; BEGIN OPEN cur_titulos; LOOP FETCH cur_titulos INTO titulo; EXIT WHEN cur_titulos%NOTFOUND; DBMS_OUTPUT.PUT_LINE('Titulo de código: ' || to_char(titulo)); END LOOP; CLOSE cur_titulos; END;

 Criar uma procedure que atualiza o salário de determinado funcionário. Caso o funcionário não exista, emita uma mensagem de alerta;

Exercício

 Utilizado para executar uma ação quando uma outra acontecer, ou seja:  Quando uma determinada ação acontece, uma reação é acionada.  Cuidado com:  Tabelas mutantes  Especificação das restrições de acontecimento

CREATE [ OR REPLACE ] TRIGGER [ BEFORE | AFTER | INSTEAD OF ] ON [REFERENCING NEW AS OLD AS ] [ FOR EACH ROW [ WHEN ] ] [ DECLARE PRAGMA AUTONOMOUS_TRANSACTION ] BEGIN END ;

 Uso de BEFORE possibilita o acesso a valores antigos e novos  Uso de FOR EACH ROW gera várias execuções do gatilho  A opção FOR EACH ROW determina se o gatilho é do tipo row trigger ou statement trigger  Se especificada, o gatilho é executado UMA vez para cada tupla afetada pelo evento  Se omitida, o gatilho é executado UMA ÚNICA vez para cada ocorrência de evento

 A opção WHEN:  É usada apenas com row triggers  Consiste em uma expressão booleana – SQL  Não pode incluir: ▪ Subconsultas ▪ Expressões em PL/SQL ▪ Funções definidas pelo usuário

 Criar uma tabela de auditoria para as alterações feitas na tabela funcionário que guarde o usuário, o tipo e a data da modificação feita na tabela bem como os dados modificados do funcionário (código, cargo, salário). CREATE TABLE auditorlog ( audit_date DATE, audit_user VARCHAR2(30), audit_desc VARCHAR2(30), old_func_id NUMBER(7), old_func_carg VARCHAR2(40), old_func_sal NUMBER(7,2), new_func_id NUMBER(7), new_func_carg VARCHAR2(40), new_func_sal NUMBER(7,2) );

Exemplo e exercício

 Utilizado para melhor organização dos elementos do banco de dados.  Na definição do pacote só é apresentada a especificação do mesmo  A implementação é apresentada à parte através do corpo do pacote

CREATE [OR REPLACE] PACKAGE {IS|AS} | END ; CREATE [OR REPLACE] PACKAGE BODY {IS|AS} END ;

 Crie um Package onde, dada uma equipe sejam listadas as modalidades relacionadas a ela. CREATE OR REPLACE PACKAGE manipula_modalidade IS FUNCTION contar_modalidade (codigo_esporte IN esporte.codigoesp%TYPE) RETURN BINARY_INTEGER; PROCEDURE listar_modalidade (codigo_esporte IN esporte.codigoesp%TYPE); END manipula_modalidade; /

 Continuação CREATE OR REPLACE PACKAGE BODY manipula_modalidade AS FUNCTION contar_modalidade (codigo_esporte IN esporte.codigoesp%TYPE) RETURN BINARY_INTEGER IS quantidade BINARY_INTEGER; BEGIN SELECT COUNT(*) INTO quantidade FROM modalidade m where m.codigoesp = codigo_esporte; RETURN quantidade; END contar_modalidade; PROCEDURE listar_modalidade (codigo_esporte IN esporte.codigoesp%TYPE) IS quantidade NUMBER(3); CURSOR selecao_modalidades IS (SELECT m.descricao, m.codigoesp FROM modalidade m where m.codigoesp = codigo_esporte); registro selecao_modalidades%rowType;

 Continuação BEGIN SELECT contar_modalidade (codigo_esporte) INTO quantidade from dual; OPEN selecao_modalidades; WHILE quantidade > 0 LOOP FETCH selecao_modalidades INTO registro.descricao, registro.codigoesp; dbms_output.put_line (registro.descricao); quantidade := quantidade - 1; END LOOP; CLOSE selecao_modalidades; END listar_modalidade; END manipula_modalidade; /

 Crie um Package que insere uma nova equipe e logo em seguida imprime a tabela de equipes atualizada;

 Mesmas regras  Consultas a serem respondidas apenas pelos alunos. Valendo NOTA!  As respostas devem ser enviadas a até hoje.  Só vale para os alunos aqui presentes, ou seja, para quem ficou até o final da aula! =D  Os devem seguir o padrão estabelecido, caso contrário, não serão aceitos.

Muito obrigado!