Slide 1
Stored Procedure, Stored Procedure, Function and Function and TriggerTrigger
Slide 2
ObjetivosObjetivos1. Programando no banco de dados2. Stored Procedure 3. Function4. Trigger
Slide 3
1. 1. Programando no banco de Programando no banco de dadosdados
1.1 Variáveis1.2 Controle de fluxo
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'
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
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
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.‘
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
1.2.4 RETURN [n]1.2.4 RETURN [n] Pode ser usado para Trigger, Procedure ou
Function e returna um valor.
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
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
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
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.
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
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
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)
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)
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
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’
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
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
Slide 22
2.3.3 Delete a Procedure2.3.3 Delete a Procedure DROP PROCEDURE nome_procedure
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
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
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())
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)
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)
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
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
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]
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>
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
Slide 33
4.5 Exemplo4.5 ExemploCREATE TRIGGER Print_Update
ON Invetario_BicicletaFOR UPDATE
ASPRINT “A tabela invertário de bicicletas
foi atualizada"
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>
Slide 35
Top Related