Hugo Pedro Proença, 2007



Documentos relacionados
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:

Projeto de Banco de Dados

Tarefa Orientada 18 Procedimentos armazenados

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

Bases de Dados 2007/2008. Aula 8

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

Tarefa Orientada 19 Triggers

Bases de Dados 2007/2008. Aula 9

António Rocha Nuno Melo e Castro


PROCEDIMENTOS ARMAZENADOS (Stored Procedures)

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

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

Stored Procedures. Renata Viegas

Tarefa Orientada 16 Vistas

Tarefa Orientada 15 Manipulação de dados

CIÊNCIA E TECNOLOGIA DO RIO

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

Procedimentos armazenados

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

Sistemas de Informação

Tarefa Orientada 20 Cursores

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

Oracle PL/SQL Overview

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

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

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

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

SQL Procedural. Josino Rodrigues Neto

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

INE Banco de Dados II. Sumário

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

Java Mail Server. Manual do Utilizador

Programação por Objectos. Java

trigger insert, delete, update

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

Integridade dos Dados

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

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

Bases de Dados. Lab 1: Introdução ao ambiente. Figura 1. Base de dados de exemplo

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.

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

Iniciar o Data Adapter Configuration Wizard. Toolbox Data Duplo clique em OleDbDataAdapter. Botão next na caixa de diálogo

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

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

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

3 Classes e instanciação de objectos (em Java)

PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger

Programação SQL. Introdução

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

Os objetivos indicados aplicam-se a duas linguagens de programação: C e PHP

Reconhecer alguns dos objectos VBA Automatizar bases de dados recorrendo à programação VBA e scripts SQL

Introdução aos Computadores

ADMINISTRAÇÃO DE BANCO DE DADOS

Bases de Dados 1º semestre

FUNCTION ) RETURNS INTEGER AS $$ DECLARE

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

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

BASES DE DADOS I LTSI/2. Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2010/2011

Deverá ser apresentada uma caixa de combinação para auxiliar o utilizador a escolher o distrito de residência do entrevistado.

Persistência de Dados

Programação por Objectos. Java

Manual do GesFiliais

Um sistema SMS 1 simplificado

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

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO. SISTEMAS DE GESTÃO DE BASE DE DADOS Microsoft Access TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO

Índice. Índice de figuras

Ministério das Finanças Instituto de Informática. Departamento de Sistemas de Informação

Principais Comandos SQL Usados no MySql

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Manual de Utilizador. Disciplina de Projecto de Sistemas Industriais. Escola Superior de Tecnologia. Instituto Politécnico de Castelo Branco

Administração e Optimização de BDs

Orientação a Objetos

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

Tarefa Orientada 11 Junção Interna

Javascript 101. Parte 2

Logado no OracleXE vamos acessar a opção:

Java. Marcio de Carvalho Victorino

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Acronis Servidor de Licença. Manual do Utilizador

DIFERENÇAS ENTRE FUNÇÃO E BLOCO FUNCIONAL; CRIAÇÃO DE FUNÇÃO / BLOCO FUNCIONAL; UTILIZAÇÃO NO LADDER; EXEMPLO DE BLOCO FUNCIONAL;

SAMUO APP: MANUAL DO ADMINISTRADOR

Tarefa Orientada 6 Edição de Dados

MANUAL DO UTILIZADOR

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

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

Manual do Gestor da Informação do Sistema

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

PROGRAMAÇÃO EM BANCO DADOS Store Procedure e Trigger

Transição de POC para SNC

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

INTRODUÇÃO À LINGUAGEM C++

Estrutura de Dados. Introdução a Ponteiros. Prof. Gerson Borges Estrutura de Dados I 1

Transcrição:

Stored Procedures À medida que a complexidade dos sistemas aumenta, torna-se cada vez mais difícil a tarefa de integrar o SQL com as aplicações cliente. Além disto, é necessário que todas as aplicações cliente conheçam minuciosamente a estrutura da base de dados. Por outro lado, o elevado número de pedidos a partir de uma grande quantidade de clientes pode deteriorar o desempenho do sistema. Os procedimentos guardados no servidor (Stored procedures) são um mecanismo essencial na implementação de sistemas de bases de dados robustos.

Stored Procedures Os seus benefícios resultam primariamente do facto de serem executados no ambiente do servidor. São executados em processos do servidor. Servidor contém os dados Não será mais lógico que as rotinas de interacção com os dados sejam executadas no mesmo ambiente? Aproveitam mecanismos de optimização de desempenho disponibilizados pelo SGBD Podem devolver ou alterar valores e receber parâmetros de entrada.

Stored Procedures - Vantagens Desempenho Tipicamente i a máquina servidora de bases de dados tem maior capacidade de processamento em relação a um vulgar posto de trabalho. Elimina i a necessidade d de múltiplas l transmissões de dados através da rede. São compilados aquando da primeira execução e depois guardados numa tabela de sistema. É também anexa informação sobre o melhor caminho para os dados.

Stored Procedures - Vantagens Separabilidade Cliente/Servidor Facilitam a identificação clara entre as tarefas que devem ser executadas pelo lado do cliente e do servidor. Cliente. Análise e interpretação dos resultados Criação de pedidos Servidor Interacção com a informação

Stored Procedures - Vantagens Segurança Todas as operações usuais (inserção, alteração, remoção, consulta) podem ser executadas a partir de stored procedures. As aplicações cliente deixam de necessitar de um conhecimento completo e minucioso da estrutura da base de dados.

Stored Procedures Definição CREATE PROCEDURE <nome>[;versao] [@<parametro1> <tipo> [=<default>] [OUT]... AS <BLOCO T-SQL>

Stored Procedures Exemplo CREATE PROCEDURE selecciona_empregados AS SELECT * FROM Empregados; Este procedimento iria devolver todos os atributos de todas as instâncias de Empregados

Stored Procedures Execução Execute <nome_procedimento> @<parametro1>,... @<parametron> Dentro de stored procedures podem-se executar todos os tipos de instruções T-SQL excepto blocos CREATE

Stored Procedures Parâmetros Flexibilizam a utilização de stored procedures. Deve ter-se em atenção que: São locais aos procedimentos onde estão definidos Devem ser precedidos de @ para indicar que se trata de um valor de um parâmetro e não outro objecto qualquer.

Stored Procedures Parâmetros EXEMPLO 1 Criação de um procedimento para devolver toda a informação acerca de determinado empregado: CREATE PROCEDURE infempregado(@id int) AS SELECT * FROM Empregado WHERE Codigo=@id

Stored Procedures Parâmetros EXEMPLO 2 Criação de um procedimento para inserir informação relativa a um empregado CREATE PROCEDURE insempregado(@id int, @nome VARCHAR(80), @profissao int) AS INSERT INTO Empregado(@id,@nome); @ INSERT INTO ProfEmpreg(@id,@profissao);

Stored Procedures Parâmetros Valores p/ Omissão Pode-se definir um valor de omissão para cada um dos parãmetros: CREATE PROCEDURE insempregado(@id int, @nome VARCHAR(80), @profissao int = 5) AS INSERT INTO Empregado(@id,@nome) INSERT INTO ProfEmpreg(@id,@profissao) @profissao) Neste caso, sempre que não fôr colocada a profissão do novo empregado, é-lhe atribuida a profissão com código 5.

Valores de Retorno Valores de Retorno Pode-se retornar informação a partir de um procedimento de 5 formas distintas: SELECT Deve ser utilizado exclusivamente como resposta aos pedidos de informação efectuados pelas aplicações cliente. PRINT Envio de mensagens não-criticas aos utilizadores (não aos programadores!) RAISEERROR Envio de mensagens críticas aos utilizadores Parâmetros de Saída e valor de retorno Enviados à aplicação cliente como indicativos de estado da execução.

Parâmetros de Saída Correspondem a parâmetros passados por referência. O seu valor pode ser alterado dentro do procedimento e essa alteração terá efeito fora do âmbito do procedimento. Declaração Na declaração do procedimento, basta colocar a palavra chave OUTPUT a seguir ao tipo de dados do parâmetro. Execução Ao executar o procedimento é necessário indicar que o parâmetro é de saída

Parâmetros de Saída Exemplo CREATE Procedure XYZ( @a int, @b int OUTPUT) AS SELECT @b=10 RETURN Será necessário que, na declaração, seja colocad a explicitamente a informação de que o parãmetro é de saída: DECLARE @v int, @z EXECUTE XYZ(@z, @v OUTPUT)

Valores de Retorno Uso de Return Serve para terminar a execução de um procedimento, podendo disponibilizar um valor indicativo do estado de execução. Sintaxe RETURN [<valor_inteiro>] O valor de retorno deve servir exclusivamente para o programador e nunca para o utilizador de uma aplicação-cliente Pode-se utilizar em qualquer ponto de um procedimento, sendo que as instruções que se lhe seguem não serão executadas.

Valores de Retorno O SGBD disponibiliza por omissão valores indicativos do estado relativo à execução de cada procedimento: 0 Execução com sucesso -1 Falta de um objecto... 99 Estes valores são sempre devolvidos, mesmo que não exista a correspondente instrução RETURN dentro do procedimento. Cabe ao utilizador criar códigos que não interfiram com os criados por omissão (Valores Naturais).

Valores de Retorno Implícitos Exemplo 1: CREATE procedure procedimento1 as SELECT * FROM Empregado; Declare @status int Execute @status=procedimento1 SELECT @status

Valores de Retorno Explícitos Exemplo 1: CREATE procedure procedimento1 as SELECT * FROM Empregado; RETURN 5; Declare @status int Execute @status=procedimento1 SELECT @status

Stored Procedures Regras práticas: Atribua sempre que possível valores por omissão Devolva valores de retorno significativos Avalie os valores de retorno após a execução de cada procedimento Verifique @@error após cada bloco que envolva alteração da informação. Crie os novos procedimentos off-line Nunca devolva informação da BD através de valores de retorno ou de procedimentos de saída

Stored Procedures Variáveis Definição de variáveis Dentro de um procedimento as variáveis são definidas da seguinte forma: DECLARE @<nome> <Tipo> Exemplo: DECLARE @x VARCHAR(100);

Stored Procedures Variáveis Atribuição de variáveis As variáveis são normalmente atribuídas dentro de um bloco SQL através da instrução SELECT: Exemplos: SELECT @nome= João António SELECT @total=count(*) FROM Empregados SELECT @x=1

Controlo de Execução A Linguagem T-SQL como extensão ao ANSI-SQL fornece um conjunto de instruções de controlo da execução de blocos. Estas instruções permitem transferir para dentro de procedimentos grande parte das operações de manuseamento e interacção com a informação.

Controlo de Execução Execução Condicional Através das palavras-chave IF e ELSE pode-se condicionar a execução de determinado bloco. Forma: IF <expressão> <BLOCO> ELSE <BLOCO>

Controlo de Execução Execução Condicional Tal como na generalidade das linguagens estruturadas, quando um bloco é composto por mais que uma instrução deve ser delimitado pelas palavras-chave BEGIN e END Exemplo: IF @x>1 BEGIN INSERT INTO T(1) INSERT INTO R(2) END

Controlo de Execução Execução Repetida Pode-se usar a palavra-chave WHILE para definir uma condição que irá determinar o número de vezes que um bloco será executado. Forma: WHILE <expressão booleana> WHILE <expressão_booleana> BEGIN <bloco> END

Controlo de Execução Execução Repetida A palavra-chave BREAK serve, como seria de esperar, para terminar a execução dentro do bloco iterativo onde estiver incluída. A palavra-chave CONTINUE servirá envia a execução para a avaliação da expressão booleana.

Controlo de Execução Variáveis Globais São definidas pelo Sistema Gestor de Bases de Dados e têm alcance sobre todos os procedimentos criados. Nunca se podem declarar variáveis locais com o mesmo nome das variáveis de ambiente (globais) Acede-se ao seu valor através do uso de @@ @@ERROR Código de erro do ultimo bloco SQL @@ROWCOUNT Número de linhas afectadas pelo ultimo bloco. @@TRANCOUNT Número total de transacções activas do utilizador.

Tabelas Temporárias È por vezes imprescindível a criação de tabelas temporárias para registarem valor que irão ser necessários posteriormente (mas ainda no âmbito do procedimento actual. No entanto, o SGBD não permite a execução da instrução CREATE Nestas situações, podem-se criar tabelas temporárias simplesmente através do uso do caracter # Exemplo: INSERT INTO #t1 SELECT * FROM Empregados

Tabelas Temporárias Da execução do bloco anterior resultaria uma nova tabela #t criada internamente na base de dados temp e que o utilizador pode aceder como se de outra tabela qualquer se tratasse. SELECT * FROM #t É imprescindível que o utilizador apague explicitamente a tabela antes de terminar a execução do procedimento Deve e ter-se em atenção o retorno o em casos imprevistos ou excepcionais. Mesmo nestes, a eliminação da tabela deve ser efectuada.