..:: SQL SERVER ::..Consulta e Programação de Banco de DadosStored Procedures& TriggersFTEGestão de TI - 2009.2
SQL SERVER - Stored ProcedureO que é?Os procedimentos armazenados são uma coleção de comandos SQL, compilados e armazenados no Banco de Dados. Geralmente eles representam tarefas repetitivas e aceitam parâmetros de entrada e saída. Eles podem retornar uma coleção de dados e sempre retorna um valor indicando sua execução ou erro. Os procedimentos armazenados melhoram o tráfego na rede, melhora a performance das aplicações, criam mecanismos de segurança e melhoram a manutenção dos códigos SQLe das aplicações que acessam o banco de dados.
SQL SERVER - Stored ProcedureModelo de Acesso ao Banco de Dados sem utilização de Stored Procedures
SQL SERVER - Stored ProcedureModelo de Acesso ao Banco de Dados utilizando Stored Procedures
SQL SERVER - Stored ProcedureAo executar a procedure pela 1ª vez ela é compilada e a cada execução seus resultados são colocados em cache, o cache é semelhante a uma memória que guarda as últimas operações do BD, caso a procedure seja executada novamente ela pega o resultado do cache diminuindo o esforço do BD e aumentando a velocidade de acesso.
SQL SERVER - Stored ProcedureOnde localizar asprocedures no Management Studio?
SQL SERVER - Stored ProcedureComo criar uma SP?Basta acessar a sua base de dados e criar uma nova query e digitar os comandos responsáveis pela criação e executá-los
SQL SERVER - Stored ProcedureComo criar uma SP?Resultado:
SQL SERVER - Stored ProcedureComo alterar uma SP?Basta acessar a sua base de dados e criar uma nova query e digitar os comandos responsáveis pela alteração e executá-los
SQL SERVER - Stored ProcedureComo alterar uma SP?Resultado da alteração:
SQL SERVER - Stored ProcedureComo atalho você pode clicar com o botão direito no nome da procedure e selecionar a opção “Modificar”Será aberta uma janela com os comandos da procedure, em seguida, basta alterar e executar.
SQL SERVER - Stored ProcedureProcedures com Parâmetros:A procedure é criada normalmente só que após o seu nome você especifica quais os parâmetros (@parâmetro) e o tipo do mesmo.
SQL SERVER - Stored ProcedureProcedures com Parâmetros:Resultado da execução:
SQL SERVER - Stored ProcedureComo deletar as procedures criadas?Basta clicar com o botão direito na procedure e selecionar -> Excluir
SQL SERVER - Stored ProcedureComo excluir uma SP?Basta acessar a sua base de dados e criar uma nova query e digitar os comandos responsáveis para exclusão de dados na tabela e executá-los:
SQL SERVER - Stored ProcedureComo executar as procedures ?
SQL SERVER - Stored ProcedureCriação de Stored Procedure com a turma:/* #1 Exemplo de SP - Select Simples */CREATE PROCEDURE SP_tbEmpregadoASBEGINSELECT * FROM empregadoENDEXEC SP_tbEmpregado
SQL SERVER - Stored ProcedureCriação de Stored Procedure com a turma:/* #2 Exemplo de SP - Select + ORDER BY */CREATE PROCEDURE SP_ListarEmpregadosASBEGINSELECT * FROM empregadoORDER BY nome DESCENDEXEC SP_ListarEmpregados
SQL SERVER - Stored ProcedureCriação de Stored Procedure com a turma:/* #2 Alterar Procedure - Select + ORDER BY */ALTER PROCEDURE SP_ListarEmpregadosASBEGINSELECT * FROM empregadoORDER BY cpf ASCENDEXEC SP_ListarEmpregados
SQL SERVER - Stored ProcedureCriação de Stored Procedure com a turma:/* #3 Exemplo de SP - Select com parâmetros */CREATE PROCEDURE SP_NomeDepartamento@numero varchar(40)ASBEGINSELECT nome FROM departamento WHERE numero=@numeroENDEXEC SP_NomeDepartamento 3
SQL SERVER - Stored ProcedureCriação de Stored Procedure com a turma:/* #4 Exemplo de SP - Select múltiplos parâmetros */CREATE PROCEDURE SP_tbProjeto@numero INT,@depart VARCHAR(30)ASBEGINSELECT * FROM projeto WHERE numero=@numero AND depart=@departENDEXEC SP_tbProjeto 1, 2
SQL SERVER - Stored ProcedureCriação de Stored Procedure com a turma:/* #5 Exemplo de SP - Exemplo Insert múltiplos parâmetros */CREATE PROCEDURE SP_Add_Empregado@cpf CHAR(11),@nome VARCHAR(40),@salario FLOAT,@dt_nasc DATETIME,@alocacao INT,@supervisor CHAR(11)ASBEGININSERT INTO empregado (cpf, nome, salario, dt_nasc, alocacao, supervisor)VALUES (@cpf, @nome, @salario, @dt_nasc, @alocacao, @supervisor)ENDEXEC SP_Add_Empregado7, 'Lucas Ferreira Costa', 15000, '07/01/1989', 2, nullSELECT * FROM empregado
SQL SERVER - Stored ProcedureCriação de Stored Procedure com a turma:/* #6 Exemplo de SP - Exemplo Updatemúltiplos parâmetros */CREATE PROCEDURE SP_AtualizarDepartamento@numero CHAR(11),@nome VARCHAR(40),@gerente CHAR(11),@dt_inicio_ger DATETIMEASBEGINUPDATE departamento SET nome=@nome, gerente=@gerente, dt_inicio_ger=@dt_inicio_ger WHERE numero=@numeroENDEXEC SP_AtualizarDepartamento 1, 'Diretoria', null, nullSELECT * FROM departamento
SQL SERVER - Stored ProcedureCriação de Stored Procedure com a turma:/* #7 Exemplo de SP - Exemplo Delete com parâmetros */CREATE PROCEDURE SP_DelEmpregado@cpf CHAR(11)ASBEGINDELETE empregado WHERE cpf=@cpfENDEXEC SP_DelEmpregado 7
SQL SERVER - Stored ProcedureCriação de Stored Procedure com a turma:/* #8 Exemplo de SP - Procedure com parâmetro de saída */CREATE PROCEDURE SP_SomaSalario (@SOMA FLOAT OUTPUT)ASBEGINSELECT @Soma=sum(salario) FROM empregadoENDDECLARE @Salario_Total FLOATEXEC SP_SomaSalario @Salario_Total OUTPUTPRINT 'Salário Total: R$'+(CAST(@Salario_Total AS VARCHAR(20)))/* Fim - StoredProcedures com a Turma. */
SQL SERVER - Stored ProcedureQuais as vantagens do trabalho com Procedures? Separação dos códigos SQL da Linguagem de programação
 Criação de um repositório unificado dos códigos SQL
 Aumento de performance das aplicações
 Maior segurança
 Diminuição do tráfego da redeSQL SERVER - Stored ProcedurePerguntas ?
SQL SERVER - TriggerO que é?A Trigger(ou gatilho) é um objeto que é automaticamente executado assim que efetuado um INSERT, DELETE ou UPDATE na tabela. Entre as vantagens da utilização da Trigger, podemos destacar: Criar validações que envolvam pesquisas em mais de uma tabela;
 Inserir o conteúdo de uma coluna a partir do conteúdo de outras colunas;
 Alterar outras tabelas a partir da inclusão ou alteração de dados da tabela que estamos utilizando.SQL SERVER - TriggerTriggers - Before e After: Os gatilhos BEFORE disparam antes das modificações da instrução serem aplicadas, e antes de qualquer restrição ser aplicada.
 Os gatilhos AFTER disparam após todas as restrições terem sido satisfeitas, e após todas as alterações terem sido aplicadas à tabela de destino.SQL SERVER - TriggerQuando o gatilho vai ser disparado?O Trigger é disparado por um dos seguintes eventos no banco de dados:INSERT;
UPDATE;
DELETE.SQL SERVER - TriggerItens a definir na criação de uma Trigger? O nome;
 A Tabela para o qual o Trigger irá ser criado;
 Quando o Trigger deverá ser disparado;
 Os comandos que determinam qual ação o Trigger deverá executar.SQL SERVER - TriggerLimitações na sua utilização:Não é possível criar um Trigger para uma visão;
O resultado da execução de um Trigger é retornado para a aplicação que o chamou;

Stored Procedures and Triggers

  • 1.
    ..:: SQL SERVER::..Consulta e Programação de Banco de DadosStored Procedures& TriggersFTEGestão de TI - 2009.2
  • 2.
    SQL SERVER -Stored ProcedureO que é?Os procedimentos armazenados são uma coleção de comandos SQL, compilados e armazenados no Banco de Dados. Geralmente eles representam tarefas repetitivas e aceitam parâmetros de entrada e saída. Eles podem retornar uma coleção de dados e sempre retorna um valor indicando sua execução ou erro. Os procedimentos armazenados melhoram o tráfego na rede, melhora a performance das aplicações, criam mecanismos de segurança e melhoram a manutenção dos códigos SQLe das aplicações que acessam o banco de dados.
  • 3.
    SQL SERVER -Stored ProcedureModelo de Acesso ao Banco de Dados sem utilização de Stored Procedures
  • 4.
    SQL SERVER -Stored ProcedureModelo de Acesso ao Banco de Dados utilizando Stored Procedures
  • 5.
    SQL SERVER -Stored ProcedureAo executar a procedure pela 1ª vez ela é compilada e a cada execução seus resultados são colocados em cache, o cache é semelhante a uma memória que guarda as últimas operações do BD, caso a procedure seja executada novamente ela pega o resultado do cache diminuindo o esforço do BD e aumentando a velocidade de acesso.
  • 6.
    SQL SERVER -Stored ProcedureOnde localizar asprocedures no Management Studio?
  • 7.
    SQL SERVER -Stored ProcedureComo criar uma SP?Basta acessar a sua base de dados e criar uma nova query e digitar os comandos responsáveis pela criação e executá-los
  • 8.
    SQL SERVER -Stored ProcedureComo criar uma SP?Resultado:
  • 9.
    SQL SERVER -Stored ProcedureComo alterar uma SP?Basta acessar a sua base de dados e criar uma nova query e digitar os comandos responsáveis pela alteração e executá-los
  • 10.
    SQL SERVER -Stored ProcedureComo alterar uma SP?Resultado da alteração:
  • 11.
    SQL SERVER -Stored ProcedureComo atalho você pode clicar com o botão direito no nome da procedure e selecionar a opção “Modificar”Será aberta uma janela com os comandos da procedure, em seguida, basta alterar e executar.
  • 12.
    SQL SERVER -Stored ProcedureProcedures com Parâmetros:A procedure é criada normalmente só que após o seu nome você especifica quais os parâmetros (@parâmetro) e o tipo do mesmo.
  • 13.
    SQL SERVER -Stored ProcedureProcedures com Parâmetros:Resultado da execução:
  • 14.
    SQL SERVER -Stored ProcedureComo deletar as procedures criadas?Basta clicar com o botão direito na procedure e selecionar -> Excluir
  • 15.
    SQL SERVER -Stored ProcedureComo excluir uma SP?Basta acessar a sua base de dados e criar uma nova query e digitar os comandos responsáveis para exclusão de dados na tabela e executá-los:
  • 16.
    SQL SERVER -Stored ProcedureComo executar as procedures ?
  • 17.
    SQL SERVER -Stored ProcedureCriação de Stored Procedure com a turma:/* #1 Exemplo de SP - Select Simples */CREATE PROCEDURE SP_tbEmpregadoASBEGINSELECT * FROM empregadoENDEXEC SP_tbEmpregado
  • 18.
    SQL SERVER -Stored ProcedureCriação de Stored Procedure com a turma:/* #2 Exemplo de SP - Select + ORDER BY */CREATE PROCEDURE SP_ListarEmpregadosASBEGINSELECT * FROM empregadoORDER BY nome DESCENDEXEC SP_ListarEmpregados
  • 19.
    SQL SERVER -Stored ProcedureCriação de Stored Procedure com a turma:/* #2 Alterar Procedure - Select + ORDER BY */ALTER PROCEDURE SP_ListarEmpregadosASBEGINSELECT * FROM empregadoORDER BY cpf ASCENDEXEC SP_ListarEmpregados
  • 20.
    SQL SERVER -Stored ProcedureCriação de Stored Procedure com a turma:/* #3 Exemplo de SP - Select com parâmetros */CREATE PROCEDURE SP_NomeDepartamento@numero varchar(40)ASBEGINSELECT nome FROM departamento WHERE numero=@numeroENDEXEC SP_NomeDepartamento 3
  • 21.
    SQL SERVER -Stored ProcedureCriação de Stored Procedure com a turma:/* #4 Exemplo de SP - Select múltiplos parâmetros */CREATE PROCEDURE SP_tbProjeto@numero INT,@depart VARCHAR(30)ASBEGINSELECT * FROM projeto WHERE numero=@numero AND depart=@departENDEXEC SP_tbProjeto 1, 2
  • 22.
    SQL SERVER -Stored ProcedureCriação de Stored Procedure com a turma:/* #5 Exemplo de SP - Exemplo Insert múltiplos parâmetros */CREATE PROCEDURE SP_Add_Empregado@cpf CHAR(11),@nome VARCHAR(40),@salario FLOAT,@dt_nasc DATETIME,@alocacao INT,@supervisor CHAR(11)ASBEGININSERT INTO empregado (cpf, nome, salario, dt_nasc, alocacao, supervisor)VALUES (@cpf, @nome, @salario, @dt_nasc, @alocacao, @supervisor)ENDEXEC SP_Add_Empregado7, 'Lucas Ferreira Costa', 15000, '07/01/1989', 2, nullSELECT * FROM empregado
  • 23.
    SQL SERVER -Stored ProcedureCriação de Stored Procedure com a turma:/* #6 Exemplo de SP - Exemplo Updatemúltiplos parâmetros */CREATE PROCEDURE SP_AtualizarDepartamento@numero CHAR(11),@nome VARCHAR(40),@gerente CHAR(11),@dt_inicio_ger DATETIMEASBEGINUPDATE departamento SET nome=@nome, gerente=@gerente, dt_inicio_ger=@dt_inicio_ger WHERE numero=@numeroENDEXEC SP_AtualizarDepartamento 1, 'Diretoria', null, nullSELECT * FROM departamento
  • 24.
    SQL SERVER -Stored ProcedureCriação de Stored Procedure com a turma:/* #7 Exemplo de SP - Exemplo Delete com parâmetros */CREATE PROCEDURE SP_DelEmpregado@cpf CHAR(11)ASBEGINDELETE empregado WHERE cpf=@cpfENDEXEC SP_DelEmpregado 7
  • 25.
    SQL SERVER -Stored ProcedureCriação de Stored Procedure com a turma:/* #8 Exemplo de SP - Procedure com parâmetro de saída */CREATE PROCEDURE SP_SomaSalario (@SOMA FLOAT OUTPUT)ASBEGINSELECT @Soma=sum(salario) FROM empregadoENDDECLARE @Salario_Total FLOATEXEC SP_SomaSalario @Salario_Total OUTPUTPRINT 'Salário Total: R$'+(CAST(@Salario_Total AS VARCHAR(20)))/* Fim - StoredProcedures com a Turma. */
  • 26.
    SQL SERVER -Stored ProcedureQuais as vantagens do trabalho com Procedures? Separação dos códigos SQL da Linguagem de programação
  • 27.
    Criação deum repositório unificado dos códigos SQL
  • 28.
    Aumento deperformance das aplicações
  • 29.
  • 30.
    Diminuição dotráfego da redeSQL SERVER - Stored ProcedurePerguntas ?
  • 31.
    SQL SERVER -TriggerO que é?A Trigger(ou gatilho) é um objeto que é automaticamente executado assim que efetuado um INSERT, DELETE ou UPDATE na tabela. Entre as vantagens da utilização da Trigger, podemos destacar: Criar validações que envolvam pesquisas em mais de uma tabela;
  • 32.
    Inserir oconteúdo de uma coluna a partir do conteúdo de outras colunas;
  • 33.
    Alterar outrastabelas a partir da inclusão ou alteração de dados da tabela que estamos utilizando.SQL SERVER - TriggerTriggers - Before e After: Os gatilhos BEFORE disparam antes das modificações da instrução serem aplicadas, e antes de qualquer restrição ser aplicada.
  • 34.
    Os gatilhosAFTER disparam após todas as restrições terem sido satisfeitas, e após todas as alterações terem sido aplicadas à tabela de destino.SQL SERVER - TriggerQuando o gatilho vai ser disparado?O Trigger é disparado por um dos seguintes eventos no banco de dados:INSERT;
  • 35.
  • 36.
    DELETE.SQL SERVER -TriggerItens a definir na criação de uma Trigger? O nome;
  • 37.
    A Tabelapara o qual o Trigger irá ser criado;
  • 38.
    Quando oTrigger deverá ser disparado;
  • 39.
    Os comandosque determinam qual ação o Trigger deverá executar.SQL SERVER - TriggerLimitações na sua utilização:Não é possível criar um Trigger para uma visão;
  • 40.
    O resultado daexecução de um Trigger é retornado para a aplicação que o chamou;
  • 41.
    Não podemos usarem um Trigger os seguintes comandos SQL:ALTER DATABASE , ALTER TRIGGER, ALTER PROCEDURE, ALTER TABLE, CREATE DATABASE, CREATE INDEX, CREATE PROCEDURE, CREATE SCHEMA, CREATE TABLE, DROP DATABASE, DROP TABLE, DROP PROCEDURE, DROP TRIGGER, DROP INDEX, GRANT, RESTORE DATABASE. Entre outras.
  • 42.
    SQL SERVER -TriggerCriação de Triggers com a turma:/* #1 Exemplo de TRIGGER - Alerta do comando Insert */CREATE TRIGGER TR_AlertaInsert ON empregadoFOR INSERTAS PRINT 'Empregado cadastrado com sucesso!'insertinto empregado values (8,'Felipe Chagas Maciel', 3500, 08/10/1985, 2, '4');select * from empregado
  • 43.
    SQL SERVER -TriggerCriação de Triggers com a turma:/* #2 Exemplo de TRIGGER - Utilizando a tabela INSERTED */CREATE TRIGGER TR_TBinserted ON departamentoFOR INSERTASSELECT 'DADOS A SEREM INSERIDOS NA TABELA DEPARTAMENTO:'SELECT * FROM INSERTEDGOINSERT INTO departamento VALUES (5,'Manutenção', Null, Null);SELECT * FROM departamento
  • 44.
    SQL SERVER -TriggerCriação de Triggers com a turma:/* #3 Exemplo de TRIGGER - Utilizando a tabela DELETED */CREATE TRIGGER TR_TBdeleted ON departamentoFOR DELETEASSELECT 'DADOS A SEREM APAGADOS DA TABELA DEPARTAMENTO:'SELECT * FROM DELETEDGODELETE FROM departamentoWHERE numero=5
  • 45.
    SQL SERVER -TriggerCriação de Triggers com a turma:/* #4 Exemplo de TRIGGER - Update mostrando o antes e depois da consulta */CREATE TRIGGER TR_UpdateDepartamento ON departamentoFOR UPDATEASIF(SELECT COUNT(*) FROM DELETED) <> 0SELECT * FROM DELETEDSELECT * FROM INSERTEDGOUPDATE departamentoSET nome='Financeiro'WHERE nome='Finanças'select * from departamento
  • 46.
    SQL SERVER -TriggerCriação de Triggers com a turma:/* #5 Exemplo de TRIGGER - Alterar uma TRIGGER */ALTER TRIGGER TR_AlertaInsert ON empregadoFOR INSERTAS PRINT 'Funcionário cadastrado com sucesso!'INSERT INTO empregado VALUES (9,'João Britto Neto', 500, 07/01/1991, 1, '2');SELECT * FROM empregado
  • 47.
    SQL SERVER -TriggerCriação de Triggers com a turma:/* #6 Exemplo de TRIGGER - Excluir uma TRIGGER */DROP TRIGGER TR_AlertaInsert
  • 48.
  • 49.
    SQL SERVERComponentes:Durval NóvoaFagnerLima Flávio Matos Luana Rebouças Venceslau Neto