f. Exemplo: verificar condição de aprovação de alunos

Documentos relacionados
Banco de Dados II. PL/SQL - Procedures -Cursor - Funções. Segurança: Introdução; Controle de Acesso; Criptografia; Recursos de SQL.

UNINGÁ UNIDADE DE ENSINO SUPERIOR INGÁ FACULDADE INGÁ CIÊNCIA DA COMPUTAÇÃO CURSORS. Profº Erinaldo Sanches Nascimento

Tarefa Orientada 17 Scripts

BD II (SI 587) Procedimentos Armazenados

FACULDADE INGÁ Unidade de Ensino Superior Ingá Ltda Ciência da Computação TRIGGERS. Prof. Erinaldo Sanches Nascimento

Linguagem SQL Restrições, Triggers e Views

Programando em SQL. Triggers, Stored Procedures e funções. Profa. Késsia Marchi

WHILE = 0 -- Enquanto não é o fim do cursor, execute.

Lista 02 Sistema de Banco de Dados CAP 241 Computação Aplicada I

Avisos. Sumário. Atividade em lab Aula 29. Atividade em lab Aula 29. Programando com SQL Triggers EXERCÍCIO LAB SP. Vista da segunda prova

Sistemas de Informação e Bases de Dados 2012/2013. Stored Procedures e Triggers

Triggers(Gatilhos) Tiago Alves de Oliveira

Funções Definidas pelo Usuário

Curso de Ciência da Computação

Bases de Dados 2007/2008. Aula 8

Stored Procedures e Triggers

José Antônio da Cunha

RECUPERAÇÃO DE CONTEÚDO BANCO DE DADOS

Material Teórico. Procedures, Functions, Exceptions e Triggers. Responsável pelo Conteúdo: Prof. Ms. Alexander Gobbato Albuquerque

Bancos de Dados I. Integridade semântica

Oracle 10g: SQL e PL/SQL

PROCEDIMENTOS ARMAZENADOS (Stored Procedures)

SQL Pacotes. Profa. Dra. Cristina Dutra de Aguiar Ciferri. Laboratório de Bases de Dados Pacotes

PL/pgSQL por Diversão e Lucro

António Rocha Nuno Melo e Castro

PL/SQL. Profa. Dra. Cristina Dutra de Aguiar Ciferri. Laboratório de Bases de Dados PL/SQL

Oracle PL/SQL Overview

Banco de Dados. Professora: Luciana Faria

Prof. Josenildo Silva

Subsistema de Integridade Semântica

O dono de uma livraria cuja base de dados é administrada por si pediu-lhe para efectuar as seguintes alterações ao preço dos livros:

Banco de Dados I Introdução SQL

Revisão de Bancos de Dados

PCS3413. Engenharia de So-ware e Banco de Dados. Aula 20. Escola Politécnica da Universidade de São Paulo

Progress DCA Desenvolvendo Aplicações Caracter Parte 1

Subsistema de Integridade Semântica

Laboratório de Banco de Dados Prof. Luiz Vivacqua. PL/pgSQL A Linguagem de programação do PostgreSQL

Atualização e Inserção de Dados. SQL Avançado. Pedro F. Carvalho OCP Oracle g

Sumário. Motivação. Aplicações precisam acessar o BD Linguagens BD X Linguagens Programação. paradigmas diferentes (impedance mismatch)

26/04/2017 Triggers no SQL Server: teoria e prática aplicada em uma situação real

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING

Restrições de Integridade Semântica

Preparação. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 10/12/2013

Teste Exemplo Revisão da tentativa 1

Sistemas de Informação

BCD29008 Banco de dados

Banco de dados. Conteúdo: DDL Prof. Patrícia Lucas

BANCO DE DADOS TRIGGERS (GATILHOS) Prof. Fabiano Papaiz IFRN

14/9/2009. Banco de Dados

Banco de Dados II. Transações (Oracle) Segurança: Introdução; Controle de Acesso; Criptografia; Recursos de SQL.

Laboratório de Banco de Dados. Prof. Luiz Vivacqua.

FTIN FORMAÇÃO TÉCNICA EM INFORMÁTICA. Módulo de Programação Prof. Bruno Maciel

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL

Preparação criar tabela. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 12/11/2018

05/05/2017 Stored Procedures e Functions no MySQL com PhpMyAdmin

SQL Procedural. Josino Rodrigues Neto

Triggers e Regras. Fernando Lobo. Base de Dados, Universidade do Algarve

Procedimentos armazenados

SQL/DQL Stored Procedures (Procedimentos armazenados) Sintaxe básica de Stored Procedure:

Fundamentos de Programação ORACLE: SQL. Prof. Walter Gima

SQL Gatilhos (Triggers)

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

FTIN FORMAÇÃO TÉCNICA EM INFORMÁTICA. Módulo de Programação Prof. Bruno Maciel

Sistemas de Informação e Bases de Dados 2012/2013. Restrições de Integridade em SQL

IMPLEMENTAÇÃO DE BANCO DE DADOS

Uma solução possível para garantir, em ambiente APEX, a consistência duma estrutura ISA, total e disjuntiva.

Banco de Dados II. PL/SQL Introdução. Segurança: Introdução; Controle de Acesso; Criptografia; Recursos de SQL.

Administração de Banco de Dados

Oracle Database: Fundamentos de SQL e PL/SQL

Logado no OracleXE vamos acessar a opção:

Sumário. Discussão Exercícios. Discussão Exercícios. Discussão Exercícios. Discussão Exercícios. Programando com SQL Stored Procedures

Tarefa Orientada 9 Base de Dados Pagamentos

Oficina de Python Prof. Me. José Carlos Perini

SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL.

Professor Leonardo Larback

BD II (SI 587) Programação SQL. Prof. Josenildo Silva.

Marcos Alexandruk Marcos Alexandruk

Introdução às funções e procedimentos. SQL suporta funções e procedimentos úteis com tipos de dados específicos

UNIVERSIDADE FEDERAL DA GRANDE DOURADOS PRÓ-REITORIA DE GRADUAÇÃO PROGRAD FACULDADE DE CIÊNCIAS EXATAS E TECNOLOGIA CURSO DE SISTEMAS DE INFORMAÇÃO

MYSQL - PRIMEIROS COMANDOS CRIAÇÃCO DO BD E DAS TABELAS, INSERÇÃO E CONSULTA DE REGISTROS. create database [if not exists] <nome>

Técni n c i as e L i L n i g n u g age g ns n p ara r Ba B nc n o d e D ados I ACCESS

EXEMPLO DE FLASHBACK VERSIONS QUERY E FLASHBACK TRANSACTION QUERY

Banco de Dados. -Aprendendo conceitos -Usando o SQL Conf para: -Conectar no banco de dados -Criar, alterar, excluir e consultar estruturas de tabelas

Oficina de Introdução de Programação usando Linguagem Python Prof. Ms. Perini

Uma solução possível para garantir, em ambiente APEX, a consistência duma estrutura ISA total e disjuntiva.

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95

Oficina de Python Prof. Me. José Carlos Perini

A U L A 3 S U B G R U P O S D M L E D Q L : I N S E R I N D O E P E S Q U I S A N D O D A D O S E M U M A T A B E L A

MODELAGEM DE DADOS -INTRODUÇÃO AO SQL. Prof. Angelo Augusto Frozza, M.Sc.

Unidade 3: Estruturas de Controle Parte 2 - Lógica, SWITCH, FOR, WHILE e DO WHILE Prof. Daniel Caetano

A Linguagem SQL. Tecnologia de Base de Dados. MSc. Eugénio. Macumbe

Motivação. Aplicações precisam acessar o BD Linguagens BD X Linguagens Programação. paradigmas diferentes (impedance mismatch)

Tratamento de Exceções

PostgreSQL. André Luiz Fortunato da Silva Analista de Sistemas CIRP / USP alf@cirp.usp.br

INE Banco de Dados II. Sumário

O modelo relacional encontra-se padronizado pela indústria de informática. Ele é chamado de

Transcrição:

Tecnologia em Análise e Desenvolvimento de Sistemas Disciplina: B1SGB - Sistemas Gerenciadores de Banco de Dados Memória de aula Semana 17 1) Expressões CASE a. Tem a mesma finalidade que nas linguagens de programação, fazer seleção a partir de um valor dado/especificado (estrutura de controle). b. Com seu uso é possível economizar muitas linhas de código. c. Pode ser usada com as cláusulas SELECT e UPDATE. d. É usado numa situação em que um valor precisa ser testado. e. Sintaxe: SELECT colunas, CASE WHEN condição THEN ação... [ELSE condição padrão] FROM tabela f. Exemplo: verificar condição de aprovação de alunos SELECT RA, Nome, Nota, CASE WHEN nota >= 7 THEN Aprovado WHEN nota >=3 AND nota <7 THEN Exame Final ELSE Reprovado as Situacao FROM HistoricoApBD

Resultado da query RA Nome Nota Situacao 4563 João da Silva 6.9 Exame Final 7858 Matheus Souza 8.8 Aprovado 9209 Maria da Luz 2.0 Reprovado 3490 Luzia Videira 3.4 Exame Final g. Pode-se utilizar o mesmo comando com a cláusula UPDATE. h. Exemplo: UPDATE aluno SET nota = CASE WHEN frequencia > 80 and aval_cont = 3 THEN 10 WHEN frequencia >80 and aval_cont = 2 THEN 8.5 WHEN frequencia > 80 and aval_cont < 2 THEN 7 ELSE 0 i. Case compacto: quando precisamos testar apenas uma coluna, podemos usar o case compacto, colocando o nome da coluna que precisamos avaliar após a palavra CASE. j. O teste será apenas de IGUALDADE. Nenhum operador é utilizado. k. Exemplo SELECT nome, CASE classificação WHEN 1 THEN Muito Bom WHEN 2 THEN Bom WHEN 3 THEN Regular

WHEN 4 THEN Deficiente ELSE Ruim FROM produto 2) Gatilhos (Triggers) a. Tipo de procedimento armazenado que é executado automaticamente quando ocorre algum tipo de alteração numa tabela b. Geralmente gatilhos são usados para reforçar restrições de integridade que não podem ser tratadas pelos recursos mais simples, como regras, defaults, restrições, a opção NOT NULL. c. Um gatilho também pode ser usado para calcular e armazenar valores automaticamente em outra tabela. d. Gatilhos são sempre criados vinculados a uma determinada tabela. Se a tabela for excluída, todos os gatilhos dela são excluídos como conseqüência. Ao criar um gatilho, você pode especificar qual(is) a(s) operação(ões) em que ele será acionado: INSERT, UPDATE ou DELETE. e. Exemplos: create trigger ExclusaoNota on NotaFiscal for delete as delete from ItemNotaFiscal where NumeroNota in (select NumeroNota from deleted) f. Um gatilho pode ser criado para uma tabela para múltiplas operações nessa tabela. Por exemplo, para criar um gatilho

usado em INSERT, UPDATE e DELETE, usa-se uma sintaxe, como: create trigger <nome_do_gatilho> on <nome_da_tabela> for INSERT, UPDATE, DELETE as <texto_do_gatilho> 3) Procedimentos (Stored Procedures) a. É um conjunto de comandos SQL, ao qual é atribuído um nome, que são compilados e armazenados no servidor. Ele pode ser chamado a partir de um comando SQL qualquer. b. A utilização de Stored Procedures é uma técnica eficiente para executarmos operações repetitivas. Ao invés de digitar os comandos cada vez que determinada operação necessite ser executada, cria-se um Stored Procedure e o chamamos. Em um Stored Procedure também podemos ter estruturas de controle e decisão, típicas das linguagens de programação. c. Sintaxe: CREATE PROCEDURE nome_do_stored_procedure [ {@parametro tipo_de_dados_parametro}[=valor_default] [output] ] [,...n] AS comando1, comando2, comando3,..., comando2 GO

d. Em um Stored Procedure podemos referenciar Tabelas, Views, outras Stored Procedures e tabelas temporárias. e. Criando SP: CREATE PROC ou CREATE PROCEDURE f. Exemplo: criar um Stored Procedure que retorne todos os registros da tabela orders, em que o campo ShipCountry é igual a London. Gravar o Stored Procedure com o nome SP_PedidosLondon. O mesmo será criado no Banco de Dados Northwind USE Northwind GO CREATE PROCEDURE SP_PedidosLondon AS SELECT * FROM Orders WHERE ShipCity = 'London' g. Para executar: exec SP_PedidosLondon h. Criando uma procedure com parâmetros de entrada create procedure BuscaCliente @nomebusca varchar(50) as select CodCliente, Nome from Cliente where Nome like '%' + @nomebusca + '%' i. Dentro do procedimento pode haver vários comandos SELECT e o resultado desses comandos será o resultado do procedimento. O corpo do procedimento começa com a palavra AS e vai até o final do procedimento. j. Execução de SP: i. EXEC BuscaCliente @nomebusca = 'an': explicita o valor de cada variável/parâmetro.

ii. Se não quiser colocar os nomes das variáveis, terá de indicar os valores na mesma ordem em que as variáveis foram criadas no Stored Procedure. k. Usando estruturas de decisão (if - else) i. Exemplo USE Northwind GO CREATE PROCEDURE sp_exif @pais1 nvarchar(15), @pais2 nvarchar(15), AS /* CRIA AS VARIAVEIS LOCAIS */ DECLARE @TotPed1 int, @TotPed2 int DECLARE @mensagem1 Char(100), @mensagem2 Char(100) DECLARE @mensagem2 CHAR(100) /* DEFINE O VALOR DE CADA VARIÁVEL */ SET @TotPed1 = (SELECT Count(OrderID) FROM Orders WHERE ShipCountry=@pais1) SET @TotPed2 = (SELECT Count(OrderID) FROM Orders WHERE ShipCountry=@pais2) /* EXECUTO O TESTE, UTILIZANDO IF...ELSE */ IF (@TotPed1) > (@TotPed2) BEGIN SET @mensagem1 = 'O Número de pedidos do primeiro país é maior' PRINT(@mensagem1) ELSE IF (@TotPed1) < (@TotPed2) BEGIN SET @mensagem2 = 'O número de pedidos do segundo país é maior' PRINT(@mensagem2) ELSE

BEGIN SET @mensagem3 = 'O número de pedidos dos dois países é igual' PRINT(@mensagem3) l. Estrutura de controle de laço (While): Esta esturura faz com que um conjunto de comandos continue sendo executado, enquanto uma determinada condição for verdadeira. i. Sintaxe: WHILE Teste BEGIN Comando1 Comando2 Comando3... ComandoN ii. Exemplo USE Northwind GO CREATE PROCEDURE sp_calculasoma @numero int AS /*CRIA AS VARIÁVEIS PARA UM CONTROLE DE LAÇO INICIALIZA A VARIÁVEL COM O VALOR 1 */ DECLARE @contador int SET @soma=0 WHILE (@contador<=numero) BEGIN SET @soma=@soma+@contador INSERT INTO SomaNaturais VALUES (@contador,@soma) SET @contador = @contador+1 iii. Para executar: EXEC sp_calculasoma 10 m. Cursor: é um recurso muito utilizado com comandos de controle de laço (loop - while). O cursor recebe o resultado

de uma consulta (select) e é tratado como um resultset (tabela de resultados) para ser explorado dentro de um while. n. Para usar o cursor, é preciso declará-lo com um nome, relacioná-lo a uma consulta (select). Em seguida, deve-se abri-lo, e usar a função fetch para acessar um registro. No final, o cursor deve ser fechado. Veja em seguida, um exemplos de stored procedures com cursor. i. Exemplo /* Same as previous example, this time using a cursor. Each update commits as it is made. */ create procedure increase_price_cursor as declare @price money /* declare a cursor for the select from titles */ declare curs cursor for select price from titles for update of price /* open the cursor */ open curs /* fetch the first row */ fetch curs into @price /* now loop, processing all the rows ** @@FETCH_STATUS = 0 means successful fetch ** @@FETCH_STATUS = 1 means error on previous fetch ** @@FETCH_STATUS = 2 means end of result set reached */ while (@@FETCH_STATUS!= 2) begin /* check for errors */ if (@@FETCH_STATUS = 1) begin print 'Error in increase_price'

end return /* next adjust the price according to the criteria */ if @price > $60 select @price = @price * 1.05 else if @price > $30 and @price <= $60 select @price = @price * 1.10 else if @price <= $30 select @price = @price * 1.20 /* now, update the row */ update titles set price = @price where current of curs /* fetch the next row */ fetch curs into @price end /* close the cursor and return */ CLOSE curs DEALLOCATE curs Fonte deste exemplo: http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.dc20020_1251/html/databases/x61512.htm (adaptado) Bibliografia ELMASRI, R., NAVATHE, S.B. Sistemas de Banco de Dados. 4ª Ed. São Paulo: Pearson Makron Books, 2005.

Exercícios Baseando-se no Modelo de Dados implementado em laboratório, efetue as consultas abaixo. 1) Faça uma lista que mostre o código e o endereço do imóvel e aplique um desconto no preço do imóvel seguindo estas condições: a. Caso o preço do imóvel seja maior que 100 mil, desconto de 10%. b. Caso seja maior que 50 mil e menor ou igual a 100 mil, desconto de 5%. c. Caso seja maior que 30 mil e menor ou igual a 50 mil, desconto de 3%. d. Não aplicar desconto a imóveis com valor igual ou menor a 30 mil. 2) Faça uma lista que mostre o endereço do imóvel e o código do vendedor, e que, caso o campo STVIDO tenha conteúdo S, escreva VIDO, e do contrário, escreva DISPONÍVEL. 3) Crie um trigger que apague (em cascata) todas as ofertas de um comprador quando este for excluído do banco de dados. Atenção: para funcionar na prática, deverá ser desligada a integridade referencial entre as tabelas COMPRADOR e OFERTA. 4) Elabore um stored procedure que, dados os códigos de dois imóveis, o segundo imóvel seja setado como imóvel indicado do primeiro, se o imóvel estiver com o campo imóvel_indicado nulo. Retorne uma mensagem avisando se foi possível fazer a alteração. 5) Elabore um stored procedure que, dado três códigos de imóveis, indique aquele que tem mais ofertas. 6) Qual vendedor tem mais imóveis para vender em valor (preço), não necessariamente em quantidade. Retorne código e nome do vendedor. Baseado em: OLIVEIRA, C. H. P. SQL curso prático. Novatec, 2002.