You are on page 1of 6

Faculdade Anhanguera de Belo Horizonte

Sistemas de Informao

Programao em Banco de dados


2 ETAPA

JACKSON DE SOUZA ANGELINO

RA: 1299839987

NELIO URIAS DE OLIVEIRA

RA: 4200053275

ROOSEVELT DE SOUZA

RA: 4200053279

VALQURIA DUARTE D'AMATO

RA: 4200080510

Hlio Filho
Belo Horizonte - 06/11/2013

Tutorial:
Como criar Procedures e Triggers em Banco de dados?
1.O que so procedures?
Procedures so procedimentos que so embutidos na linguagem SQL, permitindo
que a lgica do banco de dados fique armazenada no prprio banco.
As vantagens de se utilizar procedures ao invs de construir lgicas de aplicaes
com outras linguagens de programao que o cdigo armazenado no banco de dados
pode ser acessado por vrias aplicaes, e no caso de uma mudana nas regras de negcio,
as alteraes podem ser feitas somente no banco de dados, sem comprometer outras aplicaes.
Procedures, podem aceitar argumentos e podem ser chamadas por um programa, uma sesso SQL
ou uma Trigger.
1.2 Criando uma procedure:
A sintaxe bsica de uma procedure :
CREATE [OR REPLACE] PROCEDURE [schema.]nome_da_procedure
[(parmetro1 [modo1] tipodedado1,
parmetro2 [modo2] tipodedado2,
...)]
IS|AS
Bloco
Onde:
REPLACE - indica que caso a procedure exista ela ser eliminada e substituda pela nova verso
criada pelo comando;
BLOCO - inicia com uma clusula BEGIN e termina com END ou END nome_da_procedure;
NOME_DA_PROCEDURE - indica o nome da procedure;
PARMETRO - indica o nome da varivel que passada na chamada da procedure ou o nome da
varivel que retornar os valores da procedure ou ambos. O que ir conter em parmetro depende de
MODO;
MODO - Indica que o parmetro de entrada (IN), sada (OUT) ou ambos (IN OUT). importante
notar que IN o modo default, ou seja, se no dissermos nada o modo do nosso parmetro ser,
automaticamente, IN;
TIPODEDADO - indica o tipo de dado do parmetro. Pode ser qualquer tipo de dado do SQL ou
da SQL. Pode usar referencias como %TYPE, %ROWTYPE ou qualquer tipo de dado escalar ou
composto. Ateno: no possvel fazer qualquer restrio ao tamanho do tipo de dado neste ponto.
IS|AS - a sintaxe do comando aceita tanto IS como AS. Por conveno usamos IS na criao de
procedures e AS quando estivermos criando pacotes.
BLOCO - indica as aes que sero executadas por aquela procedure.
Exemplo:
create procedure inserirCursoComValidacao @pDescricao varchar(50) as
begin

declare @vQtdeCursos int;


select @vQtdeCursos = COUNT(*) from curso where descricao = @pDescricao;
if(@pDescricao is null or @pDescricao = '')
select 'Por favor informe o nome do curso' as retorno;
else
if(@vQtdeCursos > 0)
select 'O curso j est cadastrado' as retorno;
else
begin
insert into curso (descricao) values (@pDescricao);
select 'O curso foi cadastrado com sucesso!!!' as retorno;
end
end
2.Triggers
2.1 O que uma Trigger?
Uma Trigger um comando que o sistema executa automaticamente como um efeito colateral
De uma modificao no Banco de dados. Para criar uma trigger, primeiro precisamos atender a dois
requisitos:
1. Especificar quando uma trigger deve ser executada.Isso dividido em um evento que faz
com que a trigger seja verificada e uma condio que deve ser satisfeita para que a
execuo da trigger prossiga.
2. Especificar as aes a serem tomadas quando a trigger for executada.
Quando entramos com uma trigger no banco de dados, o sistema de banco de dados assume a
responsabilidade de execut-la sempre que o evento especificado e a condio correspondente
satisfeita.
2.2 Como criar uma Trigger?
Para criar uma trigger, que insira, altere, ou delete dados do banco voc deve seguir a seguinte
sintaxe abaixo:
CREATE TRIGGER [schema_nome]trigger_nome
ON{table | view}
[WITH <dml_trigger_option>[,n]]
{FOR | AFTER | INSTEAD OF}
{[INSERT] [,][UPDATE] [,] [DELETE]}
[NOT FOR REPLICATION]
AS {sql_statement [;] [,n]EXTERNAL NAME<method specifier [;]>}
<dml_trigger_option > ::=
[ENCRYPTION]
[EXECUTE AS Clause]
<method_specifier> ::+
assembly_nome.classe_nome.metodo_nome

onde,
schema_nome
o nome dos esquema ao qual o gatilho DML pertence.
Trigger_nome
o nome do gatilho.
Table|View
a tabela na qual o gatilho executado.
DATABASE
Aplica o escopo de um gatilho DDL ao banco de dados atual
ALL SERVER
Aplica o escopo de um gatilho DDL ou de logon ao servidor atual
WITH ENCRYPTION
Ofusca o texto da instruo CREATE TRIGGER
EXECUTE AS
Especifica o contexto de segurana no qual o gatilho executado.
FOR|AFTER
After especifica que o gatilho DML disparado apenas quando todas as operaes especificadas na
instruo SQL de gatilho so executadas com xito.
INSTEAD OF
Especifica que o gatilho DML ser executado em vez da instruo SQL de gatilho, substituindo
assim as aes das instrues de gatilho.
NOT FOR REPLICATION
Indica que o gatilho no deve ser executado quando um agente de replicao modificar a tabela
envolvida no gatilho.
SQL_statement
So as condies e as aes do gatilho.
3. Resposta Passo 2 Atps
create procedure ret_comissao_funcionario @pCodigoFuncionario varchar(2),@pMesVendas

date,@panoVendas date as
begin
declare @mes date = DATEPART(MONTH,GETDATE());
declare @pano date = DATEPART(YEAR,GETDATE());
declare @codigofuncionario varchar;
declare @nomefuncionario varchar;
declare @comissao float;
if(@pCodigoFuncionario!='0')
select @nomefuncionario = nome from Funcionario
select @comissao = sum(valortotal)*Funcionario.comissao from Venda,Funcionario
where Funcionario.idfuncionario = @pCodigoFuncionario and
@panoVendas = @panoVendas and
@pMesVendas = @pMesVendas
select @nomefuncionario, @comissao as retorno1;
else (@pCodigoFuncionario ='0')
select @nomefuncionario = nome from Funcionario
select @comissao = sum(valortotal)*Funcionario.comissao from Venda,Funcionario
where Funcionario.idfuncionario = Venda.funcionario_venda and
@panoVendas = @panoVendas and
@pMesVendas = @pMesVendas
select @nomefuncionario, @comissao as retorno2;
end
end

Referncias bibliogrficas:
Site: Sql como um todo
http://sqlcomoumtodo.wordpress.com/2007/09/30/criando-procedures-sql/
Site: Linha de cdigo
http://www.linhadecodigo.com.br/artigo/335/pl_sql-procedures-e-funcoes.aspx#ixzz2jsP4D5TY
Site:MICROSOFT
http://technet.microsoft.com/pt-br/library/ms189799.aspx
Silberschatz Abraham, Sudarshan, Henry F. Korth. Sistema de Banco de Dados.traduo: Daniel

Vieira, Rio de Janeiro,2012.

You might also like