Beruflich Dokumente
Kultur Dokumente
Sistemas de Informao
RA: 1299839987
RA: 4200053275
ROOSEVELT DE SOUZA
RA: 4200053279
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
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