Páginas

quarta-feira, 13 de novembro de 2013

[MS SQL SERVER] - Exercícios de T-SQL



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

___________________________________________________________

4 comentários:

  1. Este comentário foi removido por um administrador do blog.

    ResponderExcluir
    Respostas
    1. Boa Tarde,

      Já corrigi, o que estava com problema.

      Qualquer dúvida, estou a disposição.
      Att,
      Emerson

      Excluir
  2. Cara a sua proc não está funcionando.

    ResponderExcluir
  3. Precisa 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