Documentos relacionados
Stored Procedures. Renata Viegas

Procedimentos armazenados

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

Integridade dos Dados

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

trigger insert, delete, update

PROCEDIMENTOS ARMAZENADOS (Stored Procedures)

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

Bancos de Dados I. Integridade semântica

SQL Gatilhos (Triggers)

SQL Procedural. Josino Rodrigues Neto

Projeto de Banco de Dados

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

A linguagem SQL

Oracle 10g: SQL e PL/SQL

RECUPERAÇÃO DE CONTEÚDO BANCO DE DADOS

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

PHP INTEGRAÇÃO COM MYSQL PARTE 1

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

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

PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger

Hugo Pedro Proença, 2007

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho

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

SQL DML. Frederico D. Bortoloti

Tarefa Orientada 19 Triggers

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

PROGRAMAÇÃO EM BANCO DADOS Store Procedure e Trigger

BD Oracle. Licenciatura em Engenharia Informática e Computação. Bases de Dados 2003/04

Banco de Dados I Linguagem SQL Parte 2. Autor: Prof. Cláudio Baptista Adaptado por: Prof. Ricardo Antonello

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

CIÊNCIA E TECNOLOGIA DO RIO

Structured Query Language (SQL)

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

Oracle PL/SQL Overview

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

SQL. Autor: Renata Viegas

Operação de União JOIN

Bases de Dados 2007/2008. Aula 9

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


Sistemas de Informação

Controle de transações em SQL

Monitoria GDI Aula Prática. DML + PL/SQL parte 1

Banco de Dados I. Aula 12 - Prof. Bruno Moreno 04/10/2011

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

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

Prof.: Clayton Maciel Costa

Banco de Dados Avançados Banco de Dados Ativo

Logado no OracleXE vamos acessar a opção:

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL

Neste artigo, serão apresentados os principais conceitos sobre os TRIGGERS e sua aplicabilidade.

Tarefa Orientada 15 Manipulação de dados

estiver abaixo ou igual ao mínimo, um novo pedido é acrescentado a uma relação pedidos.

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

ADMINISTRAÇÃO DE BANCO DE DADOS

Prof. Carlos Majer Aplicações Corporativas UNICID

Banco de Dados. Prof. Antonio

Programação com Acesso a Banco de Dados

EXEMPLOS DE COMANDOS NO SQL SERVER

Histórico de revisões

Structured Query Language (SQL) Ambiente Simplificado de um SGBD

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

Introdução ao SQL. Aécio Costa

Tarefa Orientada 18 Procedimentos armazenados

Sistemas de Banco de Dados

Prof. Josenildo Silva

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

PL/pgSQL por Diversão e Lucro

Linguagem SQL Sub-linguagem DDL

Aula 1 Acesso a Banco de Dados

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

AUDITORIA EM BANCO DE DADOS COM UTILIZAÇÃO DE REGRAS

Um objeto de estatística contém informações de distribuição de valores de uma ou mais colunas de uma tabela ou view indexada

No Fedora, instalamos os pacotes "mysql" e "mysql-server", usando o yum:

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

Prof. Marcelo Machado Cunha

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

1. Domínio dos Atributos

Bases de Dados 2012/2013 Funções/procedimentos e triggers. Helena Galhardas 2012 IST. Bibliografia. Manual referência PostgreSQL

Create Sequence Cria uma sequence. Uma sequence é um objeto que permite vários usuários gerarem valores inteiros sem repetição.

Bases de Dados 2012/2013 Restrições de Integridade em SQL. Helena Galhardas 2012 IST. Bibliografia

CONTRA CONTROLE DE ACESSOS E MODULARIZADOR DE SISTEMAS

2. Criar um bloco PL/SQL anônimo para imprimir as tabuadas abaixo: 5 X 10 = 50 5 X 2 = X 10 = X 2 = 2...

Treinamento sobre SQL

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

Banco de Dados. Marcio de Carvalho Victorino Exercícios SQL

Triggers no PostgreSQL

PHP INTEGRAÇÃO COM MYSQL PARTE 2

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

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Banco de Dados. Maurício Edgar Stivanello

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

Transcrição:

FAPLAN - Faculdade Anhanguera Passo Fundo Gestão da Tecnologia da Informação Banco de Dados II Prof. Eder Pazinatto Stored Procedures Procedimento armazenados dentro do banco de dados Um Stored Procedure é um conjunto de comandos SQL definidos pelo usuário que fica armazenado no banco de dados como um procedimento/função, para eventuais processamentos. Além de simples Selects, podem armazenar lógica do negócio, possuir loops, trabalhar com variáveis, imprimir mensagens de erro, etc. São processamentos aplicações(determinadas tarefas) que residem no SGBD ao invés de no código da aplicação (máquina cliente). Algumas vantagens que podemos ter usando Stored Procedures. Desempenho: Ex.: Seja a consulta SELECT p.codigop, a. nome, COUNT(*) FROM Projeto p, Alocacao a WHERE p.codproj = a.codigop GROUP BY p.codproj, p.nome Se vários usuários realizarem esta consulta o tráfego de rede será alto. No entanto, se criarmos uma stored procedure para executar esta consulta, os usuário necessitaram apenas de um comando para executar a consulta anterior: EXEC nomeprocedimento; Outro ponto é a compilação, a consulta anterior seria compilada a cada chamada, enquanto o procedimento contendo a consulta seria compilado (e armazenado na memória) uma única vez para as várias chamadas. Facilita o gerenciamento do BD: pois a consulta é escrita em um único lugar, portanto a manutenção desta torna-se mais eficaz e segura. Segurança: podemos usar stored procedures para limitar o acesso de alguns usuários ao BD. Desta forma, a maneira em que o BD pode ser modificado é estritamente definida. O formato dos procedimentos mudam em relação a versão e tipos de SGBDs. O Mysql, suporta desde a versão 5. O formato dos procedimentos mudam em relação a versão e tipos de SGBDs. O Mysql, suporta desde a versão 5.0. 1

Exemplos: utilizando o SGBD Oracle 10g Procedimento para aumentar a nota do aluno, passando como parâmetro a matrícula do aluno. CREATE OR REPLACE PROCEDURE aumentanota (cod2 IN aluno.mat%type) IS UPDATE aluno SET nota = nota * 1.5 WHERE cod2 = aluno.mat; END aumentanota; Informações: Replace: caso o procedimento exista, ele será editado Aumentanota: nome do procedimento Cod2 parâmetro, indica o nome da variável PL/SQL que é passada na chamada da procedure ou o nome da variável que retornará os valores da procedure. IN: é o modo. Indica que o parâmetro é de entrada (IN), saída (OUT) ou ambos (IN OUT). IN é o modo default, ou seja, se não informarmos nada o modo do nosso parâmetro será, automaticamente, IN; TYPE: indica o tipo de dado do parâmetro, com o comando aluno.mat% está informando que o parâmetro é do mesmo tipo e tamanho do campo mat da tabela aluno. IS AS - a sintaxe do comando aceita tanto IS como AS. Por padrão usamos IS na criação de procedures e AS quando estivermos criando pacotes no Orcale 10g. Begin End: início e fim de uma comando PL/SQL no Oracle Executar o procedimento: o procedimento pode ser executado de três forma diferentes, vai depender do tipo de procedimento e a versão do SGBD // Bloco PL/SQL begin aumentanota(0722); // 0722 matrícula que sofrer a ação end; // Chamando o procedimento CALL aumentanota(0722); // 0722 matrícula que vai sofrer a ação // Executando o procedimento EXECUTE aumentanota(0722); // 0722 matrícula que sofrer a ação 2

Exemplo 2: procedimento para excluir um aluno CREATE OR REPLACE PROCEDURE deletaaluno (matricula NUMBER) IS DELETE FROM aluno WHERE matricula = aluno.mat; END Execução do procedimento: begin deletaaluno(0722); end; * Passível de RollBack. Se não estiver por default a opção Commit Exemplos: utilizando no MySQL O MySql também utiliza parâmetros IN, OUT e INOUT, mas de maneira diferente do Oracle. A seguir, há um exemplo bastante simples de procedimentos no MySQL. Exemplo: apresentação de uma mensagem, sem envolvimento de tabelas. CREATE PROCEDURE Mesg( ) SELECT olá td bem ; Executando o procedimento: CALL Mesg( ); Exemplos: utilizando o SGBD SQL-Server Exemplo 1: CREATE PROCEDURE DBO.MostraEmpregadosDep @nomedep varchar(50) = Informática - - Departamento padrão AS SELECT e.mat, e.nome, e.endereco, e.salario FROM Empregados e, Departamento d WHERE d.nomed = @nomedep Uma chamada a este procedimento seria: USE Empresa -- Empresa nome do banco EXEC MostraEmpregadosDep Para passer um departamento como parâmetro EXEC MostraEmpregadosDep Informatica Exemplo 2: CREATE PROCEDURE InsereEmpregado @mat int, @nomee varchar(30), @endereco varchar(60), @salario float, @depto int AS INSERT INTO Empregado VALUES (@mat, @nomee, @endereco, @salario, @depto) Para execução do procedimento, chamá-lo e passar o conteúdo das variáveis com parâmetro 3

Alguns Stored Procedures, já definidos exemplo no SQL-Server - sp_tables: mostra todos os nomes das tabelas do catálogo - sp_store_procedures: mostra todos os stored procedures - sp_server_info: mostra configuração do SQL-Server - sp_databases: mostra os BD disponíveis - sp_monitor: mostra como o SQL-server está executando (memória, grau de atividade do processador, etc) - sp_who: informa quem está usando o BD num dado instante - sp_help: dá informações sobre qualquer objeto do BD TRIGGERS Regras que especificam ações disparadas automaticamente por meio de eventos Triggers são procedimentos que podem ser gravados no banco de Dados. São executados (ou disparados) implicitamente quando uma tabela é modificada, um objeto é criado ou ocorrem algumas ações de usuário ou de sistema de banco de dados. As triggers são similares as stored procedures diferindo, apenas, na maneira como são chamadas. A trigger é executada implicitamente quando ocorre algum evento de trigger enquanto a stored procedure deve ser executado explicitamente. Uma trigger é composta por três partes: - Evento (operações que ocorrem no banco de dados); - Condição (determina se a ação da regra deve ser executada); - Ação (aquilo que será efetivamente executado pela trigger) O momento em que uma trigger irá pode ser acionada. Pode ser: - BEFORE (em tabelas os comandos são executados antes que os dados da tabela sejam alterados) - AFTER (em tabelas os comando são executados depois que os dos dados da tabela forem alterados) - INSTEAD OF (em visões - indica que a trigger irá ser executada no lugar da instrução que disparou ela. Permite que façamos alterações em uma tabela através de uma visão) Trigger: Sintaxe CREATE [OR REPLACE] TRIGGER [schema.] nome_da_trigger [BEFORE AFTER] [DELETE OR INSERT OR UPDATE[OF coluna]] ON nome_da_tabela_ou_da_view [FOR EACH ROW] [WHEN [condição]] BLOCO PL/SQL -- no caso do Oracle 4

Alguns comando e opções de Triggers: Eliminando a trigger: DROP TRIGGER nome_da_trigger; Desabilitar a trigger: ALTER TRIGGER nome_da_trigger DISABLE; Quando a trigger é criada pela primeira vez ela é habilitada automaticamente. Para habilitar a trigger novamente usar o comando: ALTER TRIGGER nome_da_trigger ENABLE; Exemplo: Trigger que não permite baixar o valor da nota de um aluno(no SGBD Orcale 10g). CREATE OR REPLACE TRIGGER vericanota BEFORE UPDATE OF nota ON aluno FOR EACH ROW WHEN (NEW.nota < OLD.nota) RAISE_APPLICATION_ERROR (-20508,'Meu amigo, a nota nunca pode ser reduzida'); END; A execução do comando de atualização a seguir não vai ser permitida, pois a nota do aluno com a matrícula 0722 é 5.0, e não vai aceitar a redução da nota. A ferramenta irá apresentar uma mensagem de erro('meu amigo, a nota nunca pode ser reduzida ). UPDATE aluno SET nota = 4.8 WHERE aluno.mat=0722; 5