Top Banner
Slide 1 Stored Procedure, Stored Procedure, Function and Trigger Function and Trigger
35

Slide 1 Stored Procedure, Function and Trigger. Slide 2 Objetivos 1.Programando no banco de dados 2.Stored Procedure 3.Function 4.Trigger.

Apr 17, 2015

Download

Documents

Internet User
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Slide 1 Stored Procedure, Function and Trigger. Slide 2 Objetivos 1.Programando no banco de dados 2.Stored Procedure 3.Function 4.Trigger.

Slide 1

Stored Procedure, Stored Procedure, Function and Function and TriggerTrigger

Page 2: Slide 1 Stored Procedure, Function and Trigger. Slide 2 Objetivos 1.Programando no banco de dados 2.Stored Procedure 3.Function 4.Trigger.

Slide 2

ObjetivosObjetivos1. Programando no banco de dados2. Stored Procedure 3. Function4. Trigger

Page 3: Slide 1 Stored Procedure, Function and Trigger. Slide 2 Objetivos 1.Programando no banco de dados 2.Stored Procedure 3.Function 4.Trigger.

Slide 3

1. 1. Programando no banco de Programando no banco de dadosdados

1.1 Variáveis1.2 Controle de fluxo

Page 4: Slide 1 Stored Procedure, Function and Trigger. Slide 2 Objetivos 1.Programando no banco de dados 2.Stored Procedure 3.Function 4.Trigger.

Slide 4

1.1 1.1 VariáveisVariáveis Declaração de variáveis:

DECLARE @limit intDECLARE @min int, @max int

Atribuindo valor à variável: SET @min = 0, @max = 100

SET @limit = 10 Atribuindo valor à no bloco SQL:

SELECT @price = price FROM titles WHERE  title_id = 'PC2091'

Page 5: Slide 1 Stored Procedure, Function and Trigger. Slide 2 Objetivos 1.Programando no banco de dados 2.Stored Procedure 3.Function 4.Trigger.

Slide 5

1.2 1.2 ControleControle de de fluxofluxo1.2.1 BEGIN…END1.2.2 IF…ELSE1.2.3 CASE … WHEN1.2.4 RETURN [n]1.2.5 WHILE1.2.6 PRINT

Page 6: Slide 1 Stored Procedure, Function and Trigger. Slide 2 Objetivos 1.Programando no banco de dados 2.Stored Procedure 3.Function 4.Trigger.

Slide 6

1.2.1 BEGIN…END1.2.1 BEGIN…END Define os blocos de código (início/fim) Outras linguagens de programação:

C#, Java, C: { … }{ … } Pascal, Delphi: BEGIN … ENDBEGIN … END

Page 7: Slide 1 Stored Procedure, Function and Trigger. Slide 2 Objetivos 1.Programando no banco de dados 2.Stored Procedure 3.Function 4.Trigger.

Slide 7

1.2.2 IF…ELSE1.2.2 IF…ELSE Condicional

IF Condição  IF Condição  Código T-SQL | bloco de código Código T-SQL | bloco de código

[ELSE [ELSE  Código T-SQL | bloco de código ] Código T-SQL | bloco de código ]

Exemplo:IF (SELECT vendasAno FROM livros WHERE livro_id = 'PC

1035') > 5000 PRINT ‘Vendas no ano são que R$5000,00

para PC1035.‘

Page 8: Slide 1 Stored Procedure, Function and Trigger. Slide 2 Objetivos 1.Programando no banco de dados 2.Stored Procedure 3.Function 4.Trigger.

Slide 8

1.2.3 CASE … WHEN1.2.3 CASE … WHENCASE input_expression

WHEN  when_expression  THEN result_expression  [WHEN when_expression  THEN result_expression…n] [ELSE else_result_expression ]

ENDExemplo:SELECT CASE regra

WHEN '30' THEN ‘Pagar 30 dias após a nota final' WHEN '60' THEN ' Pagar 60 dias após a nota final '  

WHEN ‘No ato' THEN ‘Pagar quando receber a nota fiscal'     ELSE ‘Nenhum'    

END as RegrasPagamentos FROM vendas

Outras linguagens de programaçãoC#, Java: Switch … Case Switch … Case ; VB: Select … CaseSelect … Case

Page 9: Slide 1 Stored Procedure, Function and Trigger. Slide 2 Objetivos 1.Programando no banco de dados 2.Stored Procedure 3.Function 4.Trigger.

1.2.4 RETURN [n]1.2.4 RETURN [n] Pode ser usado para Trigger, Procedure ou

Function e returna um valor.

Page 10: Slide 1 Stored Procedure, Function and Trigger. Slide 2 Objetivos 1.Programando no banco de dados 2.Stored Procedure 3.Function 4.Trigger.

Slide 10

1.2.5 WHILE1.2.5 WHILE Repete o bloco de código enquanto a condição

for verdadeiraWHILE Condição WHILE Condição 

Código SQL | bloco de códicoCódigo SQL | bloco de códico[BREAK] Código SQL | bloco de código [BREAK] Código SQL | bloco de código [CONTINUE][CONTINUE]

Exemplo:WHILE (SELECT AVG(comissao) FROM vendas) < 25 BEGIN

UPDATE  vendas  SET comissao = comissao * 1.05 IF (SELECT MAX(comissao)FROM vendas) > 27 BREAK ELSE CONTINUE

ENDSELECT MAX(comissao) AS “Comissão Máxima" FROM vendas

Page 11: Slide 1 Stored Procedure, Function and Trigger. Slide 2 Objetivos 1.Programando no banco de dados 2.Stored Procedure 3.Function 4.Trigger.

Slide 11

1.2.6 PRINT1.2.6 PRINT Mostra mensagem no SQL Query Analyze

(Console)

PRINT stringPRINT string Outras linguagens de programação:

Java: System.out.print C#, VB.NET: Console.WriteLine

Page 12: Slide 1 Stored Procedure, Function and Trigger. Slide 2 Objetivos 1.Programando no banco de dados 2.Stored Procedure 3.Function 4.Trigger.

Slide 12

2. Stored Procedure2. Stored Procedure2.1 O que é uma Stored Procedure?2.2 Stored Procedure vs. comando SQL2.3 Criar, alterar e apagar uma procedure

Page 13: Slide 1 Stored Procedure, Function and Trigger. Slide 2 Objetivos 1.Programando no banco de dados 2.Stored Procedure 3.Function 4.Trigger.

Slide 13

2.1 O que é uma Store 2.1 O que é uma Store Procedure?Procedure? Uma stored procedure é uma coleção de comandos T-SQL que SQL Server compila em um plano de execução.

A Procedure é armazenada em um area de cache da memoria queando é executada pela primeira vez. Isso é feito para que o SQL Server não precise recompilar ela cada vez que for ser executada.

Ela aceita parametros de entrada, parâmetros de saída e pode retornar mensagens de sucesso ou falha.

Page 14: Slide 1 Stored Procedure, Function and Trigger. Slide 2 Objetivos 1.Programando no banco de dados 2.Stored Procedure 3.Function 4.Trigger.

Slide 14

2.2 Stored Procedure vs. Comando 2.2 Stored Procedure vs. Comando SQLSQL

Primeira execução- Verifica sintaxe- Compila- Executa- Returna dadosSegunda execução- Verifica sintaxe- Compila- Executa- Returna dados

Primeira execução- Execute- Returna dados

Segunda execução- Executa- Returna dados

SQL Statement Stored ProcedureCriação- Verifica sintaxe- Compila

Page 15: Slide 1 Stored Procedure, Function and Trigger. Slide 2 Objetivos 1.Programando no banco de dados 2.Stored Procedure 3.Function 4.Trigger.

Slide 15

2.3 Criar, alterar e apagar uma 2.3 Criar, alterar e apagar uma procedureprocedure

2.3.1 Criar uma Procedure2.3.2 Alterar uma Procedure2.3.3 Apagar uma Procedure

Page 16: Slide 1 Stored Procedure, Function and Trigger. Slide 2 Objetivos 1.Programando no banco de dados 2.Stored Procedure 3.Function 4.Trigger.

Slide 16

2.3.1 Create a Procedure2.3.1 Create a Procedure2.3.1.1 Sintaxe2.3.1.2 Exemplo 1 (sem parametros)2.3.1.3 Exemplo 2 (com parametros)2.3.1.4 Exemplo 3 (usando RETURN)

Page 17: Slide 1 Stored Procedure, Function and Trigger. Slide 2 Objetivos 1.Programando no banco de dados 2.Stored Procedure 3.Function 4.Trigger.

Slide 17

2.3.1.1 Sintaxe2.3.1.1 SintaxeCREATE PROC[EDURE] nome_procedure

[ @nome_parametro tipo_parametro] [= default] OUTPUT][,...,n]

AS CódigoT-SQL (s)

Page 18: Slide 1 Stored Procedure, Function and Trigger. Slide 2 Objetivos 1.Programando no banco de dados 2.Stored Procedure 3.Function 4.Trigger.

Slide 18

2.3.1.2 Exemplo 1 (sem 2.3.1.2 Exemplo 1 (sem parametros)parametros)

CREATE PROC Membros_DepartamentoAS

SELECT Dep_Nome, COUNT(Emp_ID) NumeroMembrosFROM Departamentos D, Empregados EWHERE D.Dep_ID = E.Dep_IDGROUP BY Dep_Nome

Run ProcedureExecute Membros_Departamento

Page 19: Slide 1 Stored Procedure, Function and Trigger. Slide 2 Objetivos 1.Programando no banco de dados 2.Stored Procedure 3.Function 4.Trigger.

Slide 19

2.3.1.3 Exemplo 2 (com 2.3.1.3 Exemplo 2 (com parametros)parametros)

CREATE PROC Membros_Departamento @DeptNome varchar(50)

ASSELECT Dep_Nome, COUNT(Emp_ID) NumeroEmpregadosFROM Departamentos D, Empregados EWHERE D.Dep_ID = E.Dep_ID and Dep_Nome = @DeptNomeGROUP BY Dep_Nome

Run ProcedureExecute Membros_Departamento ‘Contabilidade’

Page 20: Slide 1 Stored Procedure, Function and Trigger. Slide 2 Objetivos 1.Programando no banco de dados 2.Stored Procedure 3.Function 4.Trigger.

Slide 20

2.3.1.4 Exemplo 3 (Using 2.3.1.4 Exemplo 3 (Using RETURN )RETURN )

CREATE PROC GROUPLEADER_MEMBERS @Cod_Emp varchar(10) = null

ASIF @ Cod_Emp is nullBEGIN

PRINT ‘Por favor entre com o código do empregado!'

RETURNENDSELECT * FROM EmpregadosWHERE Cod_Emp = @ Cod_EmpORDER BY Nome

Page 21: Slide 1 Stored Procedure, Function and Trigger. Slide 2 Objetivos 1.Programando no banco de dados 2.Stored Procedure 3.Function 4.Trigger.

Slide 21

2.3.2 Update a Procedure2.3.2 Update a ProcedureALTER PROC[EDURE] procedure_name

[ @nome_paramtro tipo_parametro] [= default] [OUTPUT]

[,...,n]AS 

código t-sql

Page 22: Slide 1 Stored Procedure, Function and Trigger. Slide 2 Objetivos 1.Programando no banco de dados 2.Stored Procedure 3.Function 4.Trigger.

Slide 22

2.3.3 Delete a Procedure2.3.3 Delete a Procedure DROP PROCEDURE  nome_procedure

Page 23: Slide 1 Stored Procedure, Function and Trigger. Slide 2 Objetivos 1.Programando no banco de dados 2.Stored Procedure 3.Function 4.Trigger.

Slide 23

3. 3. FunctionFunction3.1 O que é uma Function?3.2 Scalar functions - Exemplo3.3 Inline Table-valued Functions - Exemplo3.4 Multi-statement Table-Valued Functions -

Exemplo

Page 24: Slide 1 Stored Procedure, Function and Trigger. Slide 2 Objetivos 1.Programando no banco de dados 2.Stored Procedure 3.Function 4.Trigger.

Slide 24

3.1 O que é uma Function?3.1 O que é uma Function? SQL Server suporta três tipos de definição de

funções: Scalar functions Inline table-valued functions Multi-statement table-valued functions

Page 25: Slide 1 Stored Procedure, Function and Trigger. Slide 2 Objetivos 1.Programando no banco de dados 2.Stored Procedure 3.Function 4.Trigger.

Slide 25

3.2 Scalar functions - Exemplo3.2 Scalar functions - ExemploCREATE FUNCTION ReceitaDiaria(@data datetime) Returns

moneyASBEGIN

DECLARE @total moneySELECT @total = sum(Quantidade * Preco)FROM Pedidos_Venda s, Pedidos_Venda_Items siWHERE s.Numero = si.Numero and year(Data) = year(@data)

and month(Data) = month(@data) and day(Data)= day(@Date)RETURN @total

END

Use:select ReceitaDiaria(GETDATE())

Page 26: Slide 1 Stored Procedure, Function and Trigger. Slide 2 Objetivos 1.Programando no banco de dados 2.Stored Procedure 3.Function 4.Trigger.

Slide 26

3.3 Inline Table-valued Functions 3.3 Inline Table-valued Functions - Exemplo- Exemplo

CREATE FUNCTION MediaPrecoPorItem (@ preco money = 0.0) RETURNS table

AS RETURN ( SELECT Descricao_Item, Preco_Item

FROM Itens WHERE Preco_Item > @preco)

Use:select * from MediaPrecoPorItem (15.00)

Page 27: Slide 1 Stored Procedure, Function and Trigger. Slide 2 Objetivos 1.Programando no banco de dados 2.Stored Procedure 3.Function 4.Trigger.

Slide 27

3.4 Multi-statement Table-Valued Functions - 3.4 Multi-statement Table-Valued Functions - ExemploExemplo

CREATE FUNCTION MediaPrecoPorItem (@ preco money = 0.0) RETURNS @table table (Descricao varchar(50) null, Preco money null) AS begin insert @table SELECT Descricao_Item, Preco_Item

FROM Itens WHERE Preco_Item > @preco

return end

Use:select * from MediaPrecoPorItem(15.00)

Page 28: Slide 1 Stored Procedure, Function and Trigger. Slide 2 Objetivos 1.Programando no banco de dados 2.Stored Procedure 3.Function 4.Trigger.

Slide 28

4. 4. TriggerTrigger4.1 O que é uma Trigger?4.2 Sintaxe de criação4.3 Habilitar/Desabilitar4.4 Tabelas de valores inseridos e excluídos 4.5 Exemplo4.6 Outras funções

Page 29: Slide 1 Stored Procedure, Function and Trigger. Slide 2 Objetivos 1.Programando no banco de dados 2.Stored Procedure 3.Function 4.Trigger.

Slide 29

4.1 O que é uma Trigger?4.1 O que é uma Trigger? Trigger é um procedimento que é executado

automaticamente como parte de uma modificação de dados.

A trigger é criada em uma tabela e associada com uma ou mais ações ligadas com uma modificação de dados (INSERT, UPDATE, or DELETE).

Quando uma das ações para que a trigger está definida ocorre, a trigger é acionada automaticamente

Alguns exemplos de uso de triggers: Manutenção de dados duplicados Complexas restrições de coluna Integridade referencial em cascata Padrões complexos Inter-banco de dados de integridade referencial

Page 30: Slide 1 Stored Procedure, Function and Trigger. Slide 2 Objetivos 1.Programando no banco de dados 2.Stored Procedure 3.Function 4.Trigger.

Slide 30

4.2 Sintaxe de criação4.2 Sintaxe de criaçãoCREATE TRIGGER nome_trigger

ON <nome_tabela><{FOR | AFTER}>{[DELETE] [,] [INSERT] [,] [UPDATE]}

AS Código SQL [...n]

Page 31: Slide 1 Stored Procedure, Function and Trigger. Slide 2 Objetivos 1.Programando no banco de dados 2.Stored Procedure 3.Function 4.Trigger.

Slide 31

4.3 Habilitar/Desabilitar4.3 Habilitar/Desabilitar Sitaxe para desabilitar

Disable trigger <trigger_name> on <table_name>

Sitaxe para habilitarEnable trigger <trigger_name> on <table_name>

Page 32: Slide 1 Stored Procedure, Function and Trigger. Slide 2 Objetivos 1.Programando no banco de dados 2.Stored Procedure 3.Function 4.Trigger.

Slide 32

4.4 Deleted and Inserted tables4.4 Deleted and Inserted tables Quando você cria uma trigger, você tem acesso a duas

tabelas temporárias (a tabela de valores apagados e inseridos). Eles são representados como tabelas, mas diferentemente das tabelas de banco de dados. Eles são armazenados na memória não no disco.

Quando um insert, update ou delete é executed. Todos os dados serão copiados para essa tabela com a mesma estrutura.

Os valores inseridas e excluídas são acessíveis apenas dentro da trigger. Uma vez que a trigger é concluída, essas tabelas não estão mais disponíveis.

Inserted Table

Deleted Table

novo novo antigo antigo

Insert Update Delete

Page 33: Slide 1 Stored Procedure, Function and Trigger. Slide 2 Objetivos 1.Programando no banco de dados 2.Stored Procedure 3.Function 4.Trigger.

Slide 33

4.5 Exemplo4.5 ExemploCREATE TRIGGER Print_Update

ON Invetario_BicicletaFOR UPDATE

ASPRINT “A tabela invertário de bicicletas

foi atualizada"

Page 34: Slide 1 Stored Procedure, Function and Trigger. Slide 2 Objetivos 1.Programando no banco de dados 2.Stored Procedure 3.Function 4.Trigger.

Slide 34

4.6 Outras Funções4.6 Outras Funções Ver conteúdo da trigger

sp_helptext <trigger name>

Ver número de triggers na a tablesp_helptrigger <table name>

Page 35: Slide 1 Stored Procedure, Function and Trigger. Slide 2 Objetivos 1.Programando no banco de dados 2.Stored Procedure 3.Function 4.Trigger.

Slide 35