Procedimentos armazenados



Documentos relacionados
Stored Procedures. Renata Viegas


Tarefa Orientada 18 Procedimentos armazenados

Projeto de Banco de Dados

PROCEDIMENTOS ARMAZENADOS (Stored Procedures)

SQL DML. Frederico D. Bortoloti

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

Tarefa Orientada 19 Triggers

CIÊNCIA E TECNOLOGIA DO RIO

Persistência de Dados

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

Hugo Pedro Proença, 2007

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

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

A linguagem SQL

Integridade dos Dados

PHP INTEGRAÇÃO COM MYSQL PARTE 1

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

Structured Query Language (SQL)

Exemplos de Gatilhos. Prof. Márcio Bueno

RECUPERAÇÃO DE CONTEÚDO BANCO DE DADOS

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

Bases de Dados 2007/2008. Aula 8

Linguagem SQL. Comandos Básicos

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

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

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

Manter estatísticas atualizadas é uma das regras de ouro na busca por performance.

SQL. Autor: Renata Viegas

Introdução ao SQL. Aécio Costa

LINGUAGEM SQL. SQL Server 2008 Comandos iniciais

Introdução à linguagem SQL

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

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

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

Operação de União JOIN

Bases de Dados 2005/2006. Aula 5


Bases de Dados 2007/2008. Aula 9

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

Linguagem SQL (Parte I)

Noções de. Microsoft SQL Server. Microsoft SQL Server

Linguagem SQL Parte I

Projeto de Banco de Dados: Empresa X

PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger

Banco de Dados I Módulo V: Indexação em Banco de Dados. (Aulas 4) Clodis Boscarioli

Banco de Dados I SQL DDL. Frederico D. Bortoloti freddb@ltc.ufes.br

SQL Server Ferramenta de administração. SQL Server Management Studio. 1º passo conectar ao banco de dados 2ª Query (consulta) usando SQL

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

Controle de transações em SQL

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

PL/pgSQL por Diversão e Lucro

ADMINISTRAÇÃO DE BANCO DE DADOS

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

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

INE Banco de Dados II. Sumário

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

PROGRAMAÇÃO EM BANCO DADOS Store Procedure e Trigger

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:

SQL. Prof. Márcio Bueno.

SQL é uma linguagem de consulta que implementa as operações da álgebra relacional de forma bem amigável.

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

Exercícios de SQL. Prof. Márcio Bueno.

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

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

TECNOLOGIA EM SISTEMAS PARA INTERNET PROJETO DE BANCO DE DADOS

Programação SQL. Introdução

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL

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

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

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

Prof.: Clayton Maciel Costa

SQL Procedural. Josino Rodrigues Neto

Manipulação de Banco de Dados com Java 1. Objetivos

Comandos de Manipulação

INTRODUÇÃO À LINGUAGEM C++

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

O comando CREATE TABLE cria a tabela solicitada e obedece à seguinte forma:

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

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

Componentes da linguagem C++

Bancos de Dados I. Integridade semântica

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

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

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

Linguagem SQL Sub-linguagem DDL

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita:

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

Modelo de Dados Relacional Restrições de um Banco de Dados Relacional

Linguagem de Consulta - SQL

Tarefa Orientada 16 Vistas

Principais Comandos SQL Usados no MySql

SQL Structured Query Language

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

MySQL. Prof. César Melo. com a ajuda de vários

Oracle 10g: SQL e PL/SQL

Oracle PL/SQL Overview

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

Transcrição:

Procedimentos armazenados Prof. Márcio Bueno {bd2tarde,bd2noited}@marciobueno.com Material da Profª Maria Lígia B. Perkusich

Procedimentos armazenados (i) Definição Um procedimento armazenado (stored procedure) é uma coleção nomeada de comandos SQL que é armazenada no servidor (compiladas), como um procedimento/ função, para eventuais processamentos. 2/23

Procedimentos armazenados (ii) Considere a consulta: SELECT codigop, nome FROM Projeto p, Alocacao a WHERE p.codproj = a.codigop Podemos criar um procedimento armazenado para a mesma, como: CREATE PROCEDURE DBO.AlocadoProjeto AS SELECT codigop, nome FROM Projeto p JOIN Alocacao a ON p.codproj = a.codigop Para executar EXEC AlocadoProjeto; 3/23

Procedimentos armazenados (iii) É um método de encapsular tarefas repetitivas que são executadas mais eficientemente Pré-compiladas Procedimento armazenado suporta Variáveis definidas pelo usuário; Execução condicional; Chamadas a outros procedimentos armazenados; Parâmetros de entrada e saída; e outras características poderosas de programação. 4/23

Criando um procedimento armazenado (i) Quando um procedimento armazenado é criado, seus comandos são verificados sintaticamente. Se estiverem corretos, o procedimento é criado. No SQL Server o nome e o código do procedimento são armazenados nas tabelas do sistema sysobjects e syscomments, respectivamente. Sp_helptext AlocadoProjeto Um erro é retornado se algum erro de sintaxe for detectado, e o procedimento não é criado. 5/23

Criando um procedimento armazenado (ii) Um processo de resolução tardia permite que os procedimentos referenciem objetos que não existam quando o procedimento é criado. Este processo permite flexibilidade porque procedimentos armazenados e outros objetos que ele referencia não precisa ser criado em uma ordem em particular. Os objetos precisam existir quando o procedimento for executado. 6/23

Criando um procedimento armazenado (iii) Quando o procedimento é executado pela primeira vez, ou se ele for recompilado, o processador de consulta ler o procedimento armazenado em um processo chamado resolução. Em seguida o otimizador de consultas analisa as declarações no procedimento e cria um plano que contém o método mais rápido para acessar os dados memória Quantidade de dados nas tabelas, índices, junções, etc. 7/23

Compilação É o processo de analisar o procedimento e criar um plano de execução que será colocado na memória - tabela sysprocedures A memória contém os planos de execução mais valiosos. Fatos que incrementam o valor de um plano incluem: Tempo necessário para compilar Uso freqüente O espaço necessário para armazenar o plano decrementa seu valor 8/23

Vantagens fundamentais Quando o procedimento é executado pela primeira vez, o plano de consulta é lido e completamente otimizado na forma de um plano de procedimento e então executado Isso evita a analise sintática, resolução a cada execução da consulta Depois de ser executado pela primeira vez, o plano de um procedimento armazenado é armazenado na memória Da próxima vez que se utilizar esse procedimento na mesma sessão, ele será lido da memória e executado 9/23

Vantagens (i) Desempenho Reduz o tráfego na rede. Ao invés dos usuários enviarem centenas de comandos SQL pela rede, os usuários podem executar operações complexas enviando apenas um comando, o que reduz a quantidade de requisições entre os clientes e os servidor. Exemplo: EXEC AlocadoProjeto 10/23

Vantagens (ii) Fácil Gerenciamento Procedimentos armazenados podem encapsular as regras do negócio. Tais regras, se mudarem, poderão ser trocadas em um único lugar. Todos os usuários podem usar o mesmo procedimento para assegurar consistência ao acesso a dados e modificação. 11/23

Vantagens (iii) Segurança Os usuários não precisam saber detalhes da implementação, ou das tabelas que serão usadas. Se um conjunto de procedimentos armazenados suporta todas as funcionalidades que os usuários precisam, esses usuários nunca precisarão acessar as tabelas diretamente. Usuários podem ter acesso aos procedimentos armazenados, mesmo que não tenham acesso direto as tabelas ou visões destas. 12/23

Sintaxe CREATE PROC[EDURE] nome_do_proc [{ @parâmetro tipo_de_dado} [=default NULL] [OUTPUT]] [,...n] [WITH {RECOMPILE ENCRYPTION {RECOMPILE, ENCRYPTION}] AS instrução_de_sql [...n] 13/23

Exemplos sem parâmetros Os comandos abaixo criam um procedimento armazenado que lista todos os livros que estão em atraso em um banco de dados de uma biblioteca. Criando o procedimento USE biblioteca CREATE PROC dbo.livros_atraso [WITH RECOMPILE] AS SELECT * FROM dbo.emprestimo WHERE data_limite < GETDATE( ) Executando o procedimento USE biblioteca EXEC livros_atraso 14/23

Exemplos - com parâmetros de entrada (i) Criando o procedimento: CREATE PROC dbo.empregados @nome varchar(50) = Pessoal AS SELECT e.matricula, e.nome, e.endereco, e.salario FROM Empregados e JOIN Departamento d ON e.cod_depto = d.codigo WHERE d.nome = @nome Uma chamada a este procedimento seria: EXEC empregados Informatica 15/23

Exemplos - com parâmetros de entrada (ii) Criando o procedimento: CREATE PROCEDURE InsereEmpregado @mat int, @nome varchar(30), @endereco varchar(60), @salario float, @depto int AS INSERT INTO Empregado VALUES (@mat, @nomee, @endereco, @salario, @depto) Executando o procedimento EXEC InsereEmpregado 324, Maria, Rua das Rosas, 100, R$ 1000,00, 10 16/23

Exemplo - com parâmetros de entrada (iii) CREATE PROCEDURE find_isbn @titulo string = null, @ traducao char(8) = portugues AS IF @titulo is null BEGIN PRINT Entre com o título RETURN END SELECT isbn, titulo, traducao FROM item I JOIN titulo t ON t.titulo_no = I.titulo_no WHERE t.titulo LIKE @titulo AND I.traducao LIKE @traducao 17/23

Exemplos - com parâmetros de saída (i) Criando o procedimento: CREATE PROCEDURE DBO.Soma @x int, @y int, @resp int OUTPUT AS SET @resp = @x + @y Executando o procedimento DECLARE @resposta int EXEC Soma 100, 400, @resposta OUTPUT (ou EXEC Soma y=400, x=100, resp=@resposta OUTPUT) Select Resposta =, @resposta 18/23

Exemplos - com parâmetros de saída (ii) Criando o procedimento: CREATE PROCEDURE DBO.Multiplica @x int, @y int, @resp int OUTPUT AS SET @resp = @x * @y Executando o procedimento DECLARE @resposta int EXEC Multiplica 2, 3, @resposta OUTPUT Select A resposta é:, @resposta 19/23

Executando procedimentos (i) Executado um procedimento armazenado por ele mesmo Exec livros_atraso Com recompilação EXEC pauthors WITH RECOMPILE 20/23

Executando procedimentos (ii) Executado um procedimento armazenado dentro de uma declaração INSERT INSERT INTO clientes EXEC empregado_cliente Criando o procedimento CREATE PROC empregado_cliente AS SELECT lastname, firstname, address, city FROM empregados WHERE data_contratacao = GETDATE() O seguinte declaração executa o procedimento INSERT into clientes EXEC empregado_cliente 21/23

Forçando a recompilação Você pode forçar todos os procedimentos armazenados e gatilhos que fazem referência a uma tabela particular serem recompiladas em seu próximo tempo de execução executando o procedimento armazenado sp_recompile: EXEC sp_recompile autores 22/23

Removendo procedimentos armazenados USE Empresa DROP PROC Empregados 23/23