Laboratório 4. Base de Dados II 2008/2009



Documentos relacionados
Laboratório 3. Base de Dados II 2008/2009

Hugo Pedro Proença, 2007

Tarefa Orientada 13 Agrupamento e sumário de dados

Tarefa Orientada 12 Junção Externa, Auto-Junção e União

Tarefa Orientada 18 Procedimentos armazenados

Tarefa Orientada 14 Subconsultas

Laboratório de Banco de Dados II Aula 1. Stored Procedures

Tarefa Orientada 11 Junção Interna

Tarefa Orientada 16 Vistas

Projeto de Banco de Dados

Bases de Dados 2005/2006. Aula 5

Tarefa Orientada 19 Triggers

Bases de Dados 2007/2008. Aula 8

Stored Procedures. Renata Viegas

Gatilhos (Triggers) Prof. Márcio Bueno Elaborado por Maria Lígia B. Perkusich

Bases de Dados 2007/2008. Aula 9

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:

NOME SEXO CPF NASCIMENTO SALARIO

António Rocha Nuno Melo e Castro

Tarefa Orientada 15 Manipulação de dados

SQL comando SELECT. SELECT [DISTINCT] <campos> FROM <tabela> [condição] [ ; ] Paulo Damico - MDK Informática Ltda.

Bases de Dados 2007/2008. Aula 1. Referências

Orientação a Objetos

Sistemas de Bases de Dados Relacionais Introdução ao SQL. Interrogações diversas sobre a Base de Dados Northwind

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

MANUAL DO UTILIZADOR

Utilização de Bases de Dados Piramidais no Desenvolvimento de um Sistema de Contabilidade Total

Bases de Dados. O ficheiro create-bank.sql contém um conjunto de instruções SQL para criar a base de dados de exemplo ilustrada na figura 1.

António Rocha Nuno Melo e Castro

Os dados no MySQL são armazenado em tabelas. Uma tabela é uma colecção de informação relacionada e consiste em colunas e linhas.

Implementando uma Classe e Criando Objetos a partir dela

IF685 Gerenciamento de Dados e Informação - Prof. Robson Fidalgo 1

Sistema de Informação de Licenciamento de Operações de Gestão de Resíduos

Tarefa Orientada 10 Obter informação a partir de uma tabela

Criação da Lista de Saída de Dados

Tarefa Orientada 2 Criar uma base de dados

Variáveis e estruturas de controlo. Introdução à Programação André L. Santos

trigger insert, delete, update

Bases de Dados. Lab 1: Introdução ao ambiente

Roteiro 9 - SQL Básico: chave estrangeira, operadores de comparação e operadores booleanos

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL

Ex.: INSERT INTO tmpautor (CDAUTOR, NMAUTOR) VALUES (1, Renato Araújo )

Linguagem SQL (Parte I)

PROCEDIMENTOS ARMAZENADOS (Stored Procedures)

Procedimentos armazenados

Bem-vindo ao tópico sobre consultas no SAP Business One.

Tabelas vista de estrutura

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

Java. Marcio de Carvalho Victorino

Geração de código intermediário. Novembro 2006

PROGRAMAÇÃO DE MICROPROCESSADORES 2011 / 2012

ARQUITETURA DE COMPUTADORES. Rogério Spindula Rosa

1. SQL Instrumental Select Delete Update Insert Group by Having Unnion All...

SQL (Structured Querie Language) Escola Secundária de Emídio Navarro 2001/2002 Estruturas, Tratamento e Organização de Dados

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

Treinamento sobre SQL

Structured Query Language (SQL)

AMBIENTE DE PROGRAMAÇÃO PYTHON

Profº Aldo Rocha. Banco de Dados

CAP. I ERROS EM CÁLCULO NUMÉRICO

Faculdade Boa Viagem Sistemas de Informação Gerenciais EXERCÍCIO PASSO-A-PASSO PEDIDOS E CONTROLE DE ESTOQUE. Microsoft Access.

Na disciplina de Cálculo Numérico, vamos trabalhar com a linguagem C++ e o compilador que vamos usar é o Dev C++.

1. FILTRAR OS DADOS ATRAVÉS DE FORMULÁRIO (FILTER BY FORM)

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

Bases de Dados II Engª. Informática + Ensino Informática

f. Vocês podem selecionar todos os campos indicando-os, ou seja, sem usar * (boa prática) g. Muito relevante na manutenção de BD e de aplicações.

INNER, CROSS, LEFT, RIGHT E FULL JOINS SIMPLES ASSIM! Wellyngton Luiz Cruz Moreira wlcmoreira@hotmail.com

Programação SQL. Introdução

15 a Aula Subprogramação /Subalgoritmos Função e Procedimento

ADMINISTRAÇÃO DE BANCO DE DADOS

FUNDAMENTOS DA ORIENTAÇÃO A OBJETOS- REVISÃO

Junções e Índices em Tabelas

SQL Procedural. Josino Rodrigues Neto

O que é o JavaScript?

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

Integridade dos Dados

Tarefa Orientada 20 Cursores

Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões

Linguagens de Programação Aula 10

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

Consistem num conjunto de apontadores para instâncias especificas de cada relação.

Banco de Dados II. Triggers e Functions. Prof. Moser Fagundes. Curso TSI Instituto Federal Sul-Rio-Grandense (IFSul) Campus Charqueadas

Banco de dados 1. Linguagem DML SQL Select Avançado. Professor: Victor Hugo L. Lopes

Ex.: INSERT INTO tmpautor (CDAUTOR, NMAUTOR) VALUES (1, Renato Araújo )

Banco de Dados. Maurício Edgar Stivanello

Tarefa Orientada 1 Base de Dados Editora

Acronis Servidor de Licença. Manual do Utilizador

SQL. Structured Query Language

Portfólio do Aluno 2012 / º Ano Linguagem de Programação Módulo n.º Fábio Oliveira

Introdução às Bases de Dados

EXEMPLOS DE COMANDOS NO SQL SERVER

Consultas SQL Parte II

Stored Procedures reduzem o tráfego na rede, pois são executadas pelo SGBD na máquina servidora de banco de dados.

Nota prévia. Convenções

Pragmática das Linguagens de Programação 2004/2005

Curso de Eng. Informática Linguagens de Programação. C Sharp University Data Processing. (C Sharp Universidade de Processamento de Dados) Docente:

Estrutura de Dados Básica

Transcrição:

Laboratório 4 Base de Dados II 2008/2009 Plano de Trabalho Lab. 4: Programação em Transact-SQL Referências MICROSOFT SQL SERVER - Procedimentos do Lado do Servidor (Stored Procedures) - cont. - Exercícios http://dev.mysql.com/doc 1. Conceito. - Stored Procedures são semelhantes a subrotinas ou subprogramas desenvolvidos noutras linguagens de programação (p.e. C, Pascal, Basic, Java, etc.), mas que são guardados no servidor. - Aceitam parâmetros de entrada e retornam resultados. Isto é, como qualquer subprograma, um procedimento permite a passagem de parâmetros de entrada e de saída, aceitando valores e devolvendo algum tipo de resultado à entidade que o invocou, que pode ser um outro procedimento, um gatilho ou mesmo uma aplicação externa cliente. - Retornam um valor de status indicando se aconteceu um erro, e qual foi. - São basicamente blocos de instruções SQL compiladas num único plano de execução.

EXERCÍCIOS I (base de dados Livro&Livro) Exercício 1. (Exercício 5 da aula prática 3 aqui repetido por conveniência). Crie um procedimento que nos forneça o total de vendas por livro, para uma dada colecção e ano de vendas. Vamos supor que a colecção é a A e que o ano é o 2000. Estratégia. - Vamos começar por por seleccionar na tabela Vendas os registos que correspondem às vendas de livros efectuadas no ano 2000. - Ao mesmo tempo, aproveitamos para fazer a combinação das tabelas Vendas e Vendas- Detalhes através duma operação de junção, mais concretamente uma equijunção. Desta operação, obtemos todos os livros vendidos, assim como a restante informação relacionada com os valores das vendas de livros para o ano pretendido. - De seguida, e agora com base na tabela Livros, seleccionamos todos os livros que pertencem à colecção indicada e continuamos o processo de cálculo, combinando os resultados obtidos nas duas etapas anteriores novamente através duma equijunção. - Por fim, agrupamos a informação obtida por livro, de forma a ser possível calcular o total de vendas por livro, ordenando a lista de livros alfabeticamente. Procedimento que fornece a relação das vendas referentes à colecção A do ano 2000, ordenadas por livro CREATE PROCEDURE VendasLivrosColeccaoAno2000 SELECT VD.Livro, L.Designação, SUM(VD.Total) Total FROM (SELECT D.Livro, V.Total FROM Vendas As V, [Vendas-Detalhes] D WHERE SUBSTRING(CONVERT(nvarchar(22),V.Data,111),1,4)= 2000 VD, (SELECT Código, Designação, Colecção FROM Livros p WHERE Colecção = A ) L WHERE L.Código = VD.Livro GROUP BY VD.Livro, L.Designação ORDER BY VD.Livro C O exemplo anterior mostra, por omissão, como a passagem de parâmetros das linguagens de programação poderiam ser úteis na construção de procedimentos do lado do servidor

(stored procedures). Por exemplo, teríamos todo o interesse em usar o procedimento anterior para uma outra colecção e um outro ano. No entanto, isso não é possível. Parâmetros de Entrada É através de parâmetros de entrada que se passa informação para dentro dum procedimento. Exercício 2. Crie um procedimento que nos forneça o total de vendas por livro, para uma dada colecção e ano de vendas. Isto obriga a reformular o procedimento do exercício anterior de modo a passar-lhe dois parâmetros concretos. O primeiro é referente a uma dada colecção e será armazenado na variável ou parâmetro formal @CódigoColecção. O segundo refere-se a um ano específico e será armazenado na variável ou parâmetro formal @AnoDeVendas. T-SQL 6.7 - Criação do procedimento VendasLivrosPorColeccaoPorAno. Procedimento que nos fornece uma relação das vendas realizadas, por colecção e por ano, agrupando-as por livro. CREATE PROCEDURE VendasLivrosPorColeccaoPorAno (@CódigoColecção VARCHAR(03), @AnoDeVendas VARCHAR(4)) PRINT 'Vendas por Colecção/Ano, Agrupadas por Livro' PRINT 'Colecção: ' + CONVERT(varchar(3), @CódigoColecção) PRINT 'Ano: ' + CONVERT(varchar(4), @AnoDeVendas) PRINT '' SELECT VD.Livro, L.Designação, SUM(VD.Total) Total FROM (SELECT D.Livro, V.Total FROM Vendas V, [Vendas-Detalhes] D WHERE SUBSTRING(CONVERT(nvarchar(22),V.Data,111),1,4)=@AnoDeVendas) VD, (SELECT Código, Designação, Colecção FROM Livros p WHERE Colecção = @CódigoColecção) L WHERE L.Código = VD.Livro GROUP BY VD.Livro, L.Designação ORDER BY VD.Livro C Nota: Podemos definir os valores por omissão dos parâmetros de cada procedimento no SQL Server Management Studio, bastando para tal seleccionar o procedimento e depois os respectivos parâmetros com o rato.

Vejamos um exemplo de execução: USE Livro&Livro EXECUTE VendasLivrosPorColecçãoPorAno a, 2002 Parâmetros de Saída É através de parâmetros de saída que um procedimento devolve ou passa informação para o exterior. Exercício 3. Crie um procedimento que nos forneça alguns dados (número, nome e total) sobre o cliente que, no dia de hoje, efectuou o maior volume de compras na Livro&Livro. T-SQL 6.8 - Criação do procedimento MelhorClienteDeHoje. CREATE PROCEDURE [MelhorClienteDeHoje] @NúmeroCliente INT OUTPUT, @NomeCliente VARCHAR(50) OUTPUT, @TotalCliente MONEY OUTPUT SELECT @NúmeroCliente=C.Número,@NomeCliente=C.Nome,@TotalCliente=sum(V.Total) FROM Vendas as V INNER JOIN Clientes C ON V.Cliente=C.Número WHERE convert(varchar(11),v.data,111)=convert(varchar(11),getdate(),111) GROUP BY C.Número, C.Nome ORDER BY sum(v.total) DESC Após a criação deste procedimento estamos em condições de analisar a sua execução e observar a forma como os parâmetros são utilizados. Para isso, vamos executar: USE Livro&Livro DECLARE @NúmeroCliente INT, @NomeCliente VARCHAR(50), @TotalCliente MONEY EXECUTE MelhorClienteDeHoje @NúmeroCliente OUTPUT, @NomeCliente OUTPUT, @TotalCliente OUTPUT PRINT Melhor cliente de hoje ( + CONVERT(VARCHAR(11),GETDATE(),111) + na loja: PRINT CONVERT(VARCHAR(10),@NúmeroCliente) PRINT @NomeCliente PRINT CONVERT(VARCHAR(25),@TotalCliente)

As variáveis declaradas antes da execução do procedimento não têm que ter o mesmo nome que os parâmetros formais, mas os tipos de dados têm de ser os mesmos, ou serem pelo menos compatíveis. Há uma outra forma de passar informação de dentro para fora dum procedimento. Para isso utiliza-se a instrução RETURN. No entanto, à semelhança da linguagem C, com esta forma de passar informação só se pode passar um dado ou resultado. Exercício 4. Crie um procedimento que nos forneça o número de livros vendidos hoje pela Livro&Livro. T-SQL 6.9 : Procedimento NúmeroLivrosVendidosHoje. CREATE PROCEDURE NúmeroLivrosVendidosHoje DECLARE @NúmeroLivros as SMALLINT SELECT @NúmeroLivros = COUNT(VD.Livro) FROM Vendas VE, [Vendas-Detalhes] VD WHERE VE.Número = VD.Número AND CONVERT(nvarchar(22), VE.Data, 111) = CONVERT(nvarchar(22),getdate(), 111) RETURN @NúmeroLivros Repare-se na declaração da variável @NúmeroLivros imediatamente antes do SELECT, sendo o seu valor devolvido com RETURN após o SELECT. Para se perceber como e onde é que o valor de retorno é guardado, observe-se o seguinte código de execução: USE Livro&Livro DECLARE @NúmeroLivrosVendidos SMALLINT EXECUTE @NúmeroLivrosVendidos = NúmeroLivrosVendidosHoje PRINT Número de livros vendidos hoje: PRINT CONVERT(VARCHAR(5), @NúmeroLivrosVendidos)

Como se pode observar, à semelhança do que acontece em C, do lado exterior ao procedimento há uma variável que, através do operador de atribuição, guarda o valor de retorno do procedimento.