Projeto de Banco de Dados



Documentos relacionados
BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

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

Hugo Pedro Proença, 2007

PROCEDIMENTOS ARMAZENADOS (Stored Procedures)

Procedimentos armazenados


PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger

SQL Procedural. Josino Rodrigues Neto

Esse artigo foi escrito tendo como base o Banco de Dados MSSQLServer &KDPDQGR6WRUHG3URFHGXUHVDSDUWLUGR&ODULRQ

Transações Seguras em Bancos de Dados (MySQL)

RECUPERAÇÃO DE CONTEÚDO BANCO DE DADOS

PROGRAMAÇÃO EM BANCO DADOS Store Procedure e Trigger

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

PHP INTEGRAÇÃO COM MYSQL PARTE 1

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

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

CIÊNCIA E TECNOLOGIA DO RIO

Logado no OracleXE vamos acessar a opção:

Oracle PL/SQL Overview

Persistência de Classe e Auto- Relacionamento em Tabelas de Banco de Dados

Stored Procedures. Renata Viegas

Trabalhando com conexão ao banco de dados MySQL no Lazarus. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

DESENVOLVIMENTO DE SOFTWARE

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

Triggers em PostgreSQL. Linguagem de Programação de Banco de Dados. Triggers em PostgreSQL. Triggers em PostgreSQL

trigger insert, delete, update

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP

Principais Comandos SQL Usados no MySql

SQL Server Triggers Aprenda a utilizar triggers em views e auditar as colunas atualizadas em uma tabela

Tarefa Orientada 19 Triggers

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

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

Resumo da Matéria de Linguagem de Programação. Linguagem C

Sistemas de Informação

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

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

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

A linguagem SQL

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

JSP - ORIENTADO A OBJETOS

Revisando sintaxes SQL e criando programa de pesquisa. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito)

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:

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

AULA 8 CRIANDO UMA CLASSE EM PHP INTERAGINDO COM BANCO DE DADOS - COM RELACIONAMENTO ENTRE TABELAS

Bancos de Dados I. Integridade semântica

DESENVOLVIMENTO DE SOFTWARE

UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN CURSO SUPERIOR DE TECNOLOGIA EM SISTEMAS PARA INTERNET. Programação para Internet I

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA AGRÍCOLA DE JUNDIAÍ EAJ - PRONATEC / REDE etec MÓDULO III DESENVOLVIMENTO PROFESSOR ADDSON COSTA

Administração de Usuários e Privilégios no Banco de Dados

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

1. Domínio dos Atributos

FUNCTION ) RETURNS INTEGER AS $$ DECLARE

Tarefa Orientada 15 Manipulação de dados

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

Triggers. um trigger permite que uma determinada sequência de comandos SQL seja accionada quando um determinado evento ocorre.

PL/pgSQL por Diversão e Lucro

Programação WEB II. PHP e Banco de Dados. progweb2@thiagomiranda.net. Thiago Miranda dos Santos Souza

BANCO DE DADOS BANCO DE DADOS. Prof. Patrícia Lucas 3º Trimestre

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

A criação de utilizadores no MySQL pode passar pela utilização de dois comandos: - Create user; - Grant;

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL

António Rocha Nuno Melo e Castro

UNIVERSIDADE FEDERAL DE SANTA MARIA - UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN BANCO DE DADOS II

Armazenamento organizado facilitando SCRUD; Agiliza processo de desenvolvimento de sistemas;

Tarefa Orientada 18 Procedimentos armazenados

Integridade dos Dados

Comandos Sequenciais if else, e Switch

Prof. Carlos Majer Aplicações Corporativas UNICID

Dadas a base e a altura de um triangulo, determinar sua área.

Bases de Dados 2007/2008. Aula 8

Nesta aula serão apresentados alguns comandos de condição, repetição e gráficos.

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

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL. Carga horária: 32 Horas

O que são Bancos de Dados?

Tarefa Orientada 16 Vistas

EXEMPLOS DE COMANDOS NO SQL SERVER

Linguagem SQL Sub-linguagem DDL

Laboratório de Banco de Dados Aula 1 Acesso a Banco de Dados. Prof. Josenildo Silva jcsilva@ifma.edu.br

CODE IGNITER INSTALAÇÃO & BANCO DE DADOS

BDII SQL Junção Revisão 8

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

Segurança de Acesso a Banco de Dados no MS SQL Server

SQL. Autor: Renata Viegas

Persistência de Dados

Manipulando Strings no VBA (Replace, Mid e InStr)

Operação de União JOIN

Aula 1 Acesso a Banco de Dados

LINGUAGEM SQL. SQL Server 2008 Comandos iniciais

Banco de Dados Objeto Relacional

Como funcionam os comandos de SQL no Logic Basic Por Alan Oliveira

Treinamento. DBA Oracle 11g. Duração: 120 horas

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

Bases de Dados 2007/2008. Aula 9

Structured Query Language (SQL)

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO

Transcrição:

Projeto de Banco de Dados Prof. Marcelo Siedler Objetivos do documento: Apresentar os conceitos de stored procedutes e funções. Exercícios. Referência: http://dev.mysql.com/doc/refman/4.1/pt/stored-procedures.html Stored Procedures e Funções Stored procedures e funções são recursos novos no MySQL versão 5.0. Uma stored procedure é um conjunto de comandos SQL que podem ser armazenados no servidor. Uma vez que isto tenha sido feito, os clientes não precisam reenviar os comandos, mas podem fazer referência às stored procedures. Stored procedures podem fornecer um aumento no desempenho já que um conjunto menor de informação precisa ser enviada entre o servidor e o cliente. O lado negativo é que isto aumenta a carga no sistema do servidor de banco de dados, já que a maior parte do trabalho é feita no servidor e menor parte é feita do lado do cliente (aplicação) e geralmente existem muitas máquinas e poucos servidores de banco de dados. Stored procedures também permitem que você tenha bibliotecas de funções no servidor de banco de dados. No entanto, linguagens de aplicações modernas já permitem que isto seja feito internamente com classes, por exemplo, e usar estes recursos das linguagens de aplicações clientes é benéfico para o programador mesmo fora do escopo do banco de dados usado. Situações onde stored procedures fazem sentido: Quando várias aplicações clientes são escritas em diferentes linguagens ou funcionam em diferentes plataformas, mas precisam realizar as mesmas operações de banco de dados. Quando a segurança é prioritária. Bancos, por exemplo, usam stored procedures para todas as operações comuns. Isto fornece um ambiente consistente e seguro, e procedures podem assegurar que cada operação seja registrada de forma apropriada. Neste tipo de condiguração, aplicações e usuários não conseguiriam nenhuma acesso as tabelas do banco de dados diretamente, mas apenas podem executar stored procedures específicas. Stored procedures e funções são rotinas criadas com as instruções CREATE PROCEDURE e CREATE FUNCTION. Um procedimento é chamado usando uma instrução CALL e só pode passar valores de retorno usando variáveis de saída. Funções podem retornar um valor escalar e pode ser chamadas de dentro de uma instrução como qualquer outra função (isto é, chamando o nome da funcao). Rotinas armazenadas podem chamar outras rotinas armazenadas. Uma rotina pode ser tanto um procedimento como uma função.

CRIANDO STORED PRODECURES Para criarmos STORED PROCEDURES no MySQL utilizamos a seguinte sinxtaxe básica: DELIMITER $$ CREATE PROCEDURE nomeprocedure () /* Aqui vai o código da procedure */ Criaremos agora uma stored procedure que irá atualizar o salário de um determinado fincionário, aumentando-0 em 300 reais. DELIMITER $$ CREATE PROCEDURE AumentarSalario(vcpf varchar(20)) UPDATE funcionario SET salario = salario + 300 where funcionario.cpf=vcpf; Para realizarmos a chamada a procedure utilizar o comando CALL. CALL AumentarSalario ('02396423487'); Exercício 1 Vamos agora criar uma stored procedure para diminuir o salário. Para isso criar uma procedure chamada DiminuirSalario que receba o Cpf do funcionário e reduza seu salário em 500 reais. Comandos de maipulação de dados são comuns de serem encapsulados em Stored Procedores(SP). Por exemplo a inclusão de registros na base de dados pode ser feita diretamente em SP trazendo vantagens de performace e segurança. O seguinte exemplo realiza uma inclusão na tabela localizacao_dep

DELIMITER $$ CREATE PROCEDURE `INSERIRLOCALIZACAO`(vDnumero INT, vdlocal VARCHAR(100)) INSERT INTO `empresa`.`localizacao_dep` (`Dnumero`, `Dlocal`) VALUES (vdnumero, vdlocal); Realizando a chamada: CALL INSERIRLOCALIZACAO(32,'João Pessoa'); Exercício 2 Criar stored procedures para inclusão das seguintes tabelas: Projeto Dependente Trabalha_Em Inserir registros através da chamada a essas tabelas. Exercício 3 Criar stored procedure para excluir registro da tabela Funcionario. Exercício 4 Criar uma stored procedure para excluir um registro da tabela Projeto. Esta exclusão deve obedecer a seguinte regra: Antes da exclusão do projeto deve-se excluir todas as referências de trabalhos realizados no mesmo. Utilizando variáveis em Stored Procedures Sintaxe básica: DECLARE nome TIPO; Exemplo: DECLARE nome VARCHAR(30); Podemos definir um valor padrão para nossa variável na inicialização: DECLARE valor INT DEFAULT 0;

Declarar várias variáveis em uma mesma linha: DECLARE vidgrupo, vnomecientifico varchar(255); Para atribuir um valor para minha variável, utiliza-se o comando SET. Exemplo: SET valor = 300; SET nome = João ; Operador Condicional Sintaxe básica: if condição then /*comandos*/ end if; exemplo: if salario > 5000 then set cargo = Gerente de Projeto ; end if; Exemplo com else: if strtipo='s' then set vidunidadedispersao = vidsementeud; else set vidunidadedispersao = vidfrutoud; end if; Exercício 5

Criar uma store procedure que receba o cpf do funcionário e uma variável de opcão. Se opção for 1, deve aumentar em 300 reais o salário do funcionário, caso contrário reduzir o mesmo em 500 reais. Exercício 6 Cria uma store procedure que deve atualizar o salário de todos os funcionários que são gerentes. Sabendo que o salário dos gerentes é composto de: Vencimento Base: 3500,00; Auxílio Viagem: 1200,00; Bônus: 1000,00. Armazenar cada valor em uma variável dentro da procedure realizando a alteração para todos os funcionários que são gerentes sempre que a procedure for executada. CRIANDO FUNCTIONS(Funções) Sintaxe Básica: CREATE FUNCTION nomefunction () RETURNS tiporetorno RETURN valor_retorno; Chamando a function: SELECT nomefunction(); Exemplo: DELIMITER $$ CREATE FUNCTION exemplofunc () RETURNS varchar(50) DETERMINISTIC RETURN 'HELLO!!!! ; Chamando a function: SELECT exemplofunc();

Agora vamos o exemplo anterior para receber um nome e retornar a frase como o exemplo: SELECT exemplofunc( Marcelo ); HELLO!!!! Marcelo Como apresentado no comando acima, as functions são chamadas em comando SQL, podendo estar inseridas dentro de comandos SQL mais complexos, vejamos o exemplo relacionado a tabela empresa: SELECT empresa.exemplo(pnome) as OlaFuncionario from funcionario; Executando o comando acima temos uma pequena amostra das possibilidades de soluções que temos utilizando functions em nosso banco de dados. Exercícios: 1) Criar uma consulta que retorne o nome do funcionário e o número médio de horas que o mesmo trabalhou por projeto. O cálculo da média deve ser realizado em uma function chamada mediaprojeto. Se o funcionário não trabalhou em nenhum projeto deve ser retornado zero. 2) Considerando que a empresa gasta 200 reais por dependente, criar uma function que retorne o total de gasto da empresa para um determinado funcionário. Utilizar a function em uma consulta que retorne o nome de cada funcionário e o total gasto por funcionário. 3) Adaptar o exercício 1 para desconsiderar o projeto 2. 4) Criar uma function que retorne os anos passados entre a data atual e uma determinada data recebida. Criar uma consulta que retorne o nome do funcionário e a idade do mesmo. Referência: http://dev.mysql.com/doc/refman/4.1/pt/date-and-time-functions.html