Execícios sobre Procedimentos Armazenados(Stored Procedures) e Gatilhos(Triggers):
1) Criar a tabela conforme abaixo:
Obs: crie o banco de dados empresa para utilizar este exemplo ( "create database empresa;" )
Create table empregado
( cpf numeric(14) not null primary key,
Nome varchar(40) not null,
Data_nasc datetime,
Sexo char(1),
Endereco varchar(100),
Sarario numeric(12,2),
Numr_dept numeric(5),
Cpf_super numeric(14))
2) Criar um procedimento armazenado que receba como parâmetro todos os dados de um Empregado e efetue a sua inclusão. Este procedimento deverá avaliar se o CPF do Empregado que está sendo inserido já existe. Se isto ocorrer, apresentar uma mensagem de erro e não efetuar a inclusão.
3) Criar um gatilho para verificar nas ocorrências de inclusão e alteração não permitindo que o CPF do supervisor seja o mesmo do supervisionado. Apresentar uma mensagem de erro informando que o Empregado não pode ser supervisor dele mesmo.
4) Criar um gatilho que verifique e não permita a redução do Salario dos Empregados.
Respostas:
Exercicio 2
use empresa;
create procedure inclui_empregado
@cpf numeric (14),
@Nome varchar(40),
@Data_nasc datetime,
@Sexo char(1),
@Endereco varchar(100),
@Salario numeric (12,2),
@Nome_dept numeric (5),
@Cpf_super numeric (14)
as
if exists (select cpf from empregado where cpf = @cpf)
begin
print 'Empregado ja Cadastrado'
end
else
begin
insert into empregado values ( @cpf, @Nome, @Data_nasc, @Sexo, @Endereco,
@Salario, @Nome_dept, @Cpf_super )
print 'Empregado '+ @Nome + ' Incluído com Sucesso!'
end
____________________________________________________________
Exercicio 3
create trigger valida_super on empregado
for insert,update
as
declare
@cpf numeric(14),
@cpf_super numeric(14)
set @cpf = ( select cpf from inserted )
set @cpf_super = ( select cpf_super from inserted )
if
(@cpf = @cpf_super)
begin
print 'Empregado não pode ser supervidor dele mesmo'
rollback
end
____________________________________________________________
Exercicio 4
create trigger salario_menor on empregado
for update
as
declare
@salario_atual numeric(12,2),
@salario_novo numeric(12,2)
set @salario_atual = ( select salario from deleted )
set @salario_novo = ( select salario from inserted )
if
(@salario_atual > @salario_novo)
begin
print 'Salario Novo não pode ser menor que o Salario Atual'
rollback
end
___________________________________________________________
Este comentário foi removido por um administrador do blog.
ResponderExcluirBoa Tarde,
ExcluirJá corrigi, o que estava com problema.
Qualquer dúvida, estou a disposição.
Att,
Emerson
Cara a sua proc não está funcionando.
ResponderExcluirPrecisa corrigir o nome da coluna salario ...caso não faça isso a trigger do salario novo da erro...poís na table empregado esta assim :Sarario numeric(12,2),
ResponderExcluir