Sunteți pe pagina 1din 35

Stored Procedure, Function and Trigger

Slide 1

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

Slide 2

1. Programando no banco de dados


1.1 Variveis 1.2 Controle de fluxo

Slide 3

1.1 Variveis
Declarao de variveis:
DECLARE @limit int DECLARE @min int, @max int

Atribuindo valor varivel: SET @min = 0, @max = 100 SET @limit = 10 Atribuindo valor no bloco SQL: SELECT @price = price FROM titles WHERE title_id = 'PC2091'

Slide 4

1.2 Controle de fluxo


1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 BEGINEND IFELSE CASE WHEN RETURN [n] WHILE PRINT

Slide 5

1.2.1 BEGINEND
Define os blocos de cdigo (incio/fim) Outras linguagens de programao:
C#, Java, C: { } Pascal, Delphi: BEGIN END

Slide 6

1.2.2 IFELSE
Condicional IF Condio Cdigo T-SQL | bloco de cdigo [ELSE Cdigo T-SQL | bloco de cdigo ]
Exemplo: IF (SELECT vendasAno FROM livros WHERE livro_id = 'PC1035') > 5000 PRINT Vendas no ano so que R$5000,00 para PC1035.

Slide 7

1.2.3 CASE WHEN


CASE input_expression WHEN when_expression THEN result_expression [WHEN when_expression THEN result_expressionn] [ELSE else_result_expression ] END
Exemplo: SELECT CASE regra WHEN '30' THEN Pagar 30 dias aps a nota final' WHEN '60' THEN ' Pagar 60 dias aps a nota final ' WHEN No ato' THEN Pagar quando receber a nota fiscal' ELSE Nenhum' END as RegrasPagamentos FROM vendas

Outras linguagens de programao C#, Java: Switch Case ; VB: Select Case
Slide 8

1.2.4 RETURN [n]


Pode ser usado para Trigger, Procedure ou Function e returna um valor.

1.2.5 WHILE
Repete o bloco de cdigo enquanto a condio for verdadeira WHILE Condio Cdigo SQL | bloco de cdico [BREAK] Cdigo SQL | bloco de cdigo [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 END SELECT MAX(comissao) AS Comisso Mxima" FROM vendas
Slide 10

1.2.6 PRINT
Mostra mensagem no SQL Query Analyze (Console) PRINT string Outras linguagens de programao:
Java: System.out.print C#, VB.NET: Console.WriteLine

Slide 11

2. Stored Procedure
2.1 O que uma Stored Procedure? 2.2 Stored Procedure vs. comando SQL 2.3 Criar, alterar e apagar uma procedure

Slide 12

2.1 O que uma Store Procedure?


Uma stored procedure uma coleo de comandos T-SQL que SQL Server compila em um plano de execuo. A Procedure armazenada em um area de cache da memoria queando executada pela primeira vez. Isso feito para que o SQL Server no precise recompilar ela cada vez que for ser executada. Ela aceita parametros de entrada, parmetros de sada e pode retornar mensagens de sucesso ou falha.

Slide 13

2.2 Stored Procedure vs. Comando SQL


SQL Statement Stored Procedure
Criao - Verifica sintaxe - Compila Primeira execuo - Verifica sintaxe - Compila - Executa - Returna dados Segunda execuo - Verifica sintaxe - Compila - Executa - Returna dados
Slide 14

Primeira execuo - Execute - Returna dados

Segunda execuo - Executa - Returna dados

2.3 Criar, alterar e apagar uma procedure


2.3.1 Criar uma Procedure 2.3.2 Alterar uma Procedure 2.3.3 Apagar uma Procedure

Slide 15

2.3.1 Create a Procedure


2.3.1.1 2.3.1.2 2.3.1.3 2.3.1.4 Sintaxe Exemplo 1 (sem parametros) Exemplo 2 (com parametros) Exemplo 3 (usando RETURN)

Slide 16

2.3.1.1 Sintaxe
CREATE PROC[EDURE] nome_procedure [ @nome_parametro tipo_parametro] [= default] OUTPUT][,...,n] AS CdigoT-SQL (s)

Slide 17

2.3.1.2 Exemplo 1 (sem parametros)


CREATE PROC Membros_Departamento AS SELECT Dep_Nome, COUNT(Emp_ID) NumeroMembros FROM Departamentos D, Empregados E WHERE D.Dep_ID = E.Dep_ID GROUP BY Dep_Nome

Run Procedure Execute Membros_Departamento

Slide 18

2.3.1.3 Exemplo 2 (com parametros)


CREATE PROC Membros_Departamento @DeptNome varchar(50) AS SELECT Dep_Nome, COUNT(Emp_ID) NumeroEmpregados FROM Departamentos D, Empregados E WHERE D.Dep_ID = E.Dep_ID and Dep_Nome = @DeptNome GROUP BY Dep_Nome

Run Procedure Execute Membros_Departamento Contabilidade

Slide 19

2.3.1.4 Exemplo 3 (Using RETURN )


CREATE PROC GROUPLEADER_MEMBERS @Cod_Emp varchar(10) = null AS IF @ Cod_Emp is null BEGIN PRINT Por favor entre com o cdigo do empregado!' RETURN END SELECT * FROM Empregados WHERE Cod_Emp = @ Cod_Emp ORDER BY Nome

Slide 20

2.3.2 Update a Procedure


ALTER PROC[EDURE] procedure_name [ @nome_paramtro tipo_parametro] [= default] [OUTPUT] [,...,n] AS cdigo t-sql

Slide 21

2.3.3 Delete a Procedure


DROP PROCEDURE nome_procedure

Slide 22

3. Function
3.1 3.2 3.3 3.4 O que uma Function? Scalar functions - Exemplo Inline Table-valued Functions - Exemplo Multi-statement Table-Valued Functions - Exemplo

Slide 23

3.1 O que uma Function?


SQL Server suporta trs tipos de definio de funes:
Scalar functions Inline table-valued functions Multi-statement table-valued functions

Slide 24

3.2 Scalar functions - Exemplo


CREATE FUNCTION ReceitaDiaria(@data datetime) Returns money AS BEGIN DECLARE @total money SELECT @total = sum(Quantidade * Preco) FROM Pedidos_Venda s, Pedidos_Venda_Items si WHERE 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 25

3.3 Inline Table-valued Functions - 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 26

3.4 Multi-statement Table-Valued Functions - Exemplo


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 27

4. Trigger
4.1 4.2 4.3 4.4 4.5 4.6 O que uma Trigger? Sintaxe de criao Habilitar/Desabilitar Tabelas de valores inseridos e excludos Exemplo Outras funes

Slide 28

4.1 O que uma Trigger?


Trigger um procedimento que executado automaticamente como parte de uma modificao de dados. A trigger criada em uma tabela e associada com uma ou mais aes ligadas com uma modificao de dados (INSERT, UPDATE, or DELETE). Quando uma das aes para que a trigger est definida ocorre, a trigger acionada automaticamente Alguns exemplos de uso de triggers:

Slide 29

Manuteno de dados duplicados Complexas restries de coluna Integridade referencial em cascata Padres complexos Inter-banco de dados de integridade referencial

4.2 Sintaxe de criao


CREATE TRIGGER nome_trigger ON <nome_tabela> <{FOR | AFTER}> {[DELETE] [,] [INSERT] [,] [UPDATE]} AS Cdigo SQL [...n]

Slide 30

4.3 Habilitar/Desabilitar
Sitaxe para desabilitar Disable trigger <trigger_name> on <table_name> Sitaxe para habilitar Enable trigger <trigger_name> on <table_name>

Slide 31

4.4 Deleted and Inserted tables


Quando voc cria uma trigger, voc tem acesso a duas tabelas temporrias (a tabela de valores apagados e inseridos). Eles so representados como tabelas, mas diferentemente das tabelas de banco de dados. Eles so armazenados na memria no no disco. Quando um insert, update ou delete executed. Todos os dados sero copiados para essa tabela com a mesma estrutura.
Insert novo Inserted Table Update novo antigo Deleted Table Delete antigo

Os valores inseridas e excludas so acessveis apenas dentro da trigger. Uma vez que a trigger concluda, essas tabelas no esto mais disponveis.
Slide 32

4.5 Exemplo
CREATE TRIGGER Print_Update ON Invetario_Bicicleta FOR UPDATE AS PRINT A tabela invertrio de bicicletas foi atualizada"

Slide 33

4.6 Outras Funes


Ver contedo da trigger
sp_helptext <trigger name>

Ver nmero de triggers na a table


sp_helptrigger <table name>

Slide 34

Slide 35

S-ar putea să vă placă și