Banco de Dados SQL Stored Procedures

Slides:



Advertisements
Apresentações semelhantes
Estruturação de Linguagens (Pascal e C++)
Advertisements

Tópicos em Banco de Dados
O Comando DROP INDEX Para eliminar um índice definido sobre uma tabela, utilize: Drop Index on ; Ex: No Access: Drop Index X on.
Programação em Java Prof. Maurício Braga
Programação em Java Prof. Maurício Braga
Estruturas de Repetição
Banco de Dados Prof. Antonio.
Triggers Renata Viegas.
SQL Structured Query Language (continuação)
Funções do SqlServer 2000 e Tipos de Junção
Elaini Simoni Angelotti
Banco de Dados SQL TRIGGERS (Gatilhos)
SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados 2º Semestre – 2010 Pedro Antonio Galvão Junior Fone:
SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados 2º Semestre – 2010 Pedro Antonio Galvão Junior Fone:
SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados 2º Semestre – 2010 Pedro Antonio Galvão Junior Fone:
Visões Marilde Santos.
Maurício Edgar Stivanello
Sistema Gerenciador de Banco de Dados SGBD
Sumário 1 Processamento de Consultas 2 Introdução a Transações
1 Tipos definidos O programador pode definir seus próprios tipos de dados tipos complexos usados da mesma forma que os simples declaram-se variáveis utilizando-se.
SQL – Noções Gerais Por Márcia Jacyntha N. Rodrigues Lucena
Operadores Especiais da SQL
Introdução à Engenharia da Computação
Material III-Bimestre Wagner Santos C. de Jesus
Linguagem de Banco de Dados - SQL
Linguagem de Banco de Dados - SQL
Revisão da Linguagem C.
Classes e objetos Arrays e Sobrecarga
Estrutura de decisão e repetição em JAVA
O Portal do Estudante de Computação
Banco de dados Profª Kelly Medeiros.
O Portal do Estudante de Computação
O Portal do Estudante de Computação
Paradigmas de programação
IAED Tagus, 2009/2010 Introdução à Programação em C (I)
Comunicação Inclusiva Acessibilidade e Programação Web
Banco de Dados II Prof. Antônio Cordeiro.
PL/SQL, Procedures e Funções
Cronograma Formato do Comando SELECT – 1ª Seção Uso de Funções (DATE_FORMAT, DAY, MONTH, NOW, CONCAT, FORMAT, COUNT, AVG, MAX, MIN e FORMAT) AS DISTINCT.
Design Patterns / Acesso ao banco de dados (java.sql)
Primeira aula de PL/SQL Parte II
SEGUNDA FASE / S2B MIC PERNAMBUCO SEGUNDA FASE / S2B MIC PERNAMBUCO
Oracle 9i: SQL e PL/SQL Bruno Celso Cunha de Freitas
SEQUENCE, PROCEDURE, FUNÇÃO, TRIGGER
Monitoria GDI Aula Prática
Desenvolvendo um script SQL
Banco de dados.
Linguagem de Definição de Dados
Microsoft SQL Server 2008 SPARSE. Para que serve? –Otimiza o espaço de armazenamento de colunas com valores NULL.
©Silberschatz, Korth and Sudarshan (modificado)4.1.1Database System Concepts Capítulo 4: SQL Estrutura básica Operações com conjuntos Funções de agregação.
Algoritmos Comandos de repetição.
1 15/4/ :36 FMU – 1. Semestre – Tecnologia – Analise e Desenvolvimento de Sistemas Professor: Eduardo Silvestri Aluno:Clóvis de Oliveira- RA
Triggers (Gatilhos) Professor Esp. Diego André Sant’Ana
7P/SI – 2010/01 Prof. Carlos Alberto Seixas. Agenda Visão Geral sobre os Conceitos e Implementação sobre SGBs MySQL Revisão das Práticas Práticas 1 e.
Introdução à Programação
Daniel Paulo Atualizando e excluindo Dados Comando UPDATE – Altera registros da tabela UPDATE tabela SET nome_coluna = expressao.
VBA – Visual Basic para Aplicativos
Programação para Web I AULA 4 ESTRUTURAS DE CONTROLE.
UCSal – Bacharelado em Informática
11 Revisão da Linguagem C Prof. Kariston Pereira Adaptado de Material gentilmente fornecido pelo Prof. Rui Tramontin (DCC/UDESC)
Linguagem de definição de dados - SQL
Banco de Dados -Aprendendo conceitos -Usando o SQL Conf para:
1 Programação de Banco de Dados José Antônio da Cunha George Azevedo da Silva.
2/6/2016 José Antônio da Cunha - CEFET - RN1 Programação de Banco de Dados Funções.
Banco de Dados Prof. MSc Wagner Siqueira Cavalcante.
Programação para Internet Aula 11 SQL (Introdução a linguagem, comandos de modificação: Create, Drop, Alter, Insert, Delete, Update)
José Antônio da Cunha 3/6/2016 José Antônio - CEFET-RN 1 Copyright © Dale Carnegie & Associates, Inc.
Recursos de Programação
Daniel Paulo SQL Server 2016 Módulo II Daniel Paulo
BANCO DE DADOS Araújo Lima Outubro / 2017 Araújo.
Transcrição da apresentação:

Banco de Dados SQL Stored Procedures Elaini Simoni Angelotti

Stored Prodecure (sp) São semelhantes a procedimentos e subrotinas em outras linguagens: Podem ser chamadas por outra sp ou por aplicativos desenvolvidos em PHP, ASP, Delphi, VB, etc Podem receber e retornar parâmetros Podem conter instruções de controle e laços Uma stored procedure (sp) é uma coleção de comandos nomeada que é salva no BD.

Vantagens de utilizar sp: Uma vez criada, uma sp pode ser executada sempre que necessário, simplesmente chamando a sp. Vantagens de utilizar sp: Facilitar a manutenção e a alteração das aplicações Ocultar a complexidade de acesso ao BD Poder receber parâmetros de entrada e retornar resultados Reduzir o tráfego de rede gerado pela aplicação Facilitar e centralizar o gerenciamento de permissões Melhorar a velocidade de execução

Para Executar a sp: EXEC sp_Teste Para escrever uma sp pode-se utilizar instruções de comparações (if), loops (while), operadores, variáveis, etc Para o início e fim de um bloco usa-se BEGIN e END Exemplo: Escrever uma sp que imprima “Hello world” CREATE PROCEDURE sp_Teste AS BEGIN SELECT ‘o famoso Hello World’ END Para Executar a sp: EXEC sp_Teste

Para Executar a sp: EXEC sp_Teste1 Pode-se declarar uma variável em uma sp para armazenar valores. Usa-se o comando DECLARE para declarar variáveis. CREATE PROCEDURE sp_Teste1 AS DECLARE @msg varchar (100) BEGIN SELECT @msg = ‘o famoso Hello World’ PRINT @msg END Para Executar a sp: EXEC sp_Teste1

Sp com Parâmetros de Entrada Permite a criação de sp mais flexíveis Os parâmetros são sempre declarados como @ e devem ter o tipo de dados definido. Exemplo 1: Crie uma sp para encontrar todas as pessoas que emprestaram uma fita em um determinado ano (para o BD Locadora). O ano será passado como parâmetro de entrada e a sp utilizará este parâmetro como critério de pesquisa, retornando o nome do cliente, data de empréstimo, data de devolução prevista e data de devolução efetiva.

EXEC sp_Emprestimo_Ano 2006 CREATE PROCEDURE sp_Emprestimo_Ano @ano int AS BEGIN select nome_cli as 'Nome do Cliente', convert(char, data_emp,103) as 'Data do Emprestimo', convert(char, data_dev_prev, 103) as 'Data da Devolução Prevista', convert(char, data_dev_efet, 103) as 'Data da Devolução Efetiva' from Cliente inner join Emp_dev on cliente.CPF_cli = Emp_dev.CPF_cli where datepart(yy, data_emp) = @ano END EXEC sp_Emprestimo_Ano 2006

Exemplo 2: Crie uma sp para encontrar todas as pessoas que emprestaram uma fita em um determinado período. Para isso, a sp terá dois parâmetros de entrada (data inicial e data final). Esses parâmetros serão utilizados como critério de pesquisa. A sp deve retornar o nome do cliente, data de empréstimo, data de devolução prevista e data de devolução efetiva.

EXEC sp_Emprestimo '2005-01-01', '2005-12-31' CREATE PROCEDURE sp_Emprestimo @data_inicio datetime, @data_fim datetime AS BEGIN select nome_cli as 'Nome do Cliente', convert(char, data_emp,103) as 'Data do Emprestimo', convert(char, data_dev_prev, 103) as 'Data da Devolução Prevista', convert(char, data_dev_efet, 103) as 'Data da Devolução Efetiva' from Cliente inner join Emp_dev on cliente.CPF_cli = Emp_dev.CPF_cli where data_emp between @data_inicio and @data_fim END EXEC sp_Emprestimo '2005-01-01', '2005-12-31'

Exemplo 3: usando variáveis, parâmetros e instrução IF .. ELSE Crie uma sp que receba uma substring do nome de um fornecedor e conte quantos fornecedores existem com aquela substring. Caso nenhum fornecedor tenha a substring, uma mensagem deve ser enviada notificando o usuário. Caso a quantidade de fornecedor seja maior que zero, então o usuário também deve ser notificado sobre o número de pessoas com a substring.

EXEC sp_BuscaFornecedor 'M' CREATE PROCEDURE sp_BuscaFornecedor @Nome_forn varchar (50) AS DECLARE @Qtde int , @msg varchar (100) BEGIN select CNPJ_forn, Nome_forn from Fornecedor where nome_forn like '%' + @Nome_forn + '%' SET @Qtde = (select count(*) from Fornecedor where nome_forn like '%' + @Nome_forn + '%') IF @Qtde = 0 select @msg = 'Nenhum fornecedor contem a substring ' + @Nome_forn print @msg END ELSE select @msg = 'existem ' + convert(char,@Qtde) select @msg = 'fornecedores com a substring ' + @Nome_forn EXEC sp_BuscaFornecedor 'M'

Exemplo 4: Crie uma sp que receba como parâmetros de entrada o nome de duas categorias de filmes e conte o número de empréstimos para cada uma das duas categorias em um determinado ano (que também será passado por parâmetro). O número de empréstimos de cada categoria deve ser armazenado em uma variável local. Em seguida, um teste é feito emitindo a mensagem de qual categoria teve mais filmes emprestados no ano selecionado.

EXEC sp_Maior_Emprestimo_Categoria 2005, 'comedia', 'terror' CREATE PROCEDURE sp_Maior_Emprestimo_Categoria @ano int, @categoria1 varchar(50), @categoria2 varchar(50) AS DECLARE @TotalCategoria1 int, @TotalCategoria2 int, @msg varchar (100) BEGIN SET @TotalCategoria1 = (select count(*) from fita inner join Emp_dev on fita.cod_fita = Emp_dev.cod_fita where categoria = @Categoria1 AND datepart(yy,data_emp) = @ano) SET @TotalCategoria2 = (select count(*) where categoria = @Categoria2 AND datepart(yy,data_emp) = @ano) IF (@TotalCategoria1 > @TotalCategoria2) set @msg = 'o número de emprestimos de fitas da categoria ' + @categoria1 + ' é maior' print @msg END ELSE IF (@TotalCategoria2 > @TotalCategoria1) set @msg = 'o número de emprestimos de fitas da categoria ' +@categoria1 + ' é menor' set @msg = 'o número emprestimos de fitas das duas categoria são iguais' EXEC sp_Maior_Emprestimo_Categoria 2005, 'comedia', 'terror'

Usando a Instrução WHILE Faz com que um conjunto de comandos execute enquanto uma dada condição for verdadeira Exemplo 5: Crie uma nova tabela chamada Soma_Naturais com dois atributos inteiros: número e Soma_acumulada create table Soma_naturais ( Numero int, Soma_acumulada int )

Em seguida crie uma sp que calcule a soma dos “n” primeiros números e armazene as somas nas respectivas colunas. Por exemplo: Número Soma Acumulada 1 2 3 6 CREATE PROCEDURE sp_CalculaSoma @num int As DELETE from Soma_naturais declare @contador int set @contador = 1 declare @soma int set @soma = 0 BEGIN WHILE (@contador <= @Num) SET @Soma = @Soma + @Contador insert into Soma_naturais values (@Contador, @soma) SET @contador = @contador + 1 END select * from Soma_naturais

Instrução WHILE e BREAK CREATE PROCEDURE sp_Preço AS DECLARE @preco_MAX money WHILE (SELECT AVG(preco) FROM fita) < 5 BEGIN UPDATE fita SET preco = preco + 1.5 SET @preco_MAX = (Select MAX(preco) FROM fita) IF (@preco_MAX > 7) BREAK PRINT 'Isso foi apenas um teste!' select * from fita END exec sp_Preço

Parâmetros de Saída para sp Para definir um parâmetro de saída basta colocar a palavra OUTPUT após a definição do tipo de parâmetro CREATE PROCEDURE sp_saída @saida int OUTPUT Crie uma sp que retorne o valor médio de preço das fitas para um estado que será passado como parâmetro de entrada

CREATE PROCEDURE sp_MediaPreçoEstado @estado char(2), @media float OUTPUT AS BEGIN SET @media = (Select AVG(preco) as Media from fita INNER JOIN Fornecedor_Fita ON Fornecedor_Fita.cod_fita = fita.cod_fita INNER JOIN Fornecedor ON Fornecedor_Fita.CNPJ_forn = Fornecedor.CNPJ_forn where UF_forn = @estado) END PARA EXECUTAR: declare @resultado float exec sp_MediaPreçoEstado 'PR', @Resultado OUTPUT Print (@Resultado)

Para alterar uma sp usa-se o seguinte comando: ALTER PROCEDURE nome_da_sp Para apagar uma sp usa-se o seguinte comando: DROP PROCEDURE nome_da_sp Para criptografar os comandos de uma sp: CREATE PROCEDURE sp_Clientes WITH ENCRYPTION AS select * from Cliente Exec sp_helptext sp_clientes Exec sp_helptext sp_Teste