Академический Документы
Профессиональный Документы
Культура Документы
Engenharia da Computao
BEGIN
select count(*) INTO param1 from empregado;
END $$
DELIMITER ;
Engenharia da Computao
if opcao = 0 then
select A vida bela;
end if;
end $$
delimiter;
CALL sp_mensagem(0);
TRIGGERS
So gatilhos programados para acontecer em determinada condio para uma
determinada tabela do banco. Os eventos responsveis em executar uma trigger so os
comandos de atualizao insert, update e delete.
Exemplo de trigger:
DELIMITER $$
CREATE TRIGGER verificaSalario before UPDATE ON empregado FOR EACH row
begin
IF NEW.salario > OLD.salario*1.05 THEN
SET NEW.salario = OLD.salario*1.05;
end IF;
END $$
DELIMITER ;
A trigger acima verifica antes de fazer uma alterao ( BEFORE UPDATE ON) se o
salrio novo est recebendo um percentual de aumento acima de 5% caso isso esteja
acontecendo ele seta o novo (NEW) salrio para receber apenas 5%.
Exerccios
1) Faa uma trigger para a tabela empregado. Antes de incluir um empregado
verifique se o salario est nulo, caso seja verdade atribua o valor do salrio
mnimo para esta coluna.
CREATE TRIGGER salariojust BEFORE INSERT ON empregado
FOR EACH ROW BEGIN
IF NEW.SALARIO IS NULL THEN
NEW.SALARIO = 880;
END IF;
END;
2) Faa uma procedure que retorno o total dos salrios pagos aos empregados.
Engenharia da Computao
Aula 06/09/2016
Exerccios Stored Procedure
1) Complete o exemplo abaixo de uma calculadora.
CREATE PROCEDURE Calculadora(IN num1 INT,IN num2 INT,IN oper
INT, OUT res int)
BEGIN
IF oper = 1 then
set res = (num1+num2);
END IF;
END $$
DELIMITER ;
//Executando a sua calculadora
CALL calculadora(12,36,1,@a);
select @a;
2) Faa uma stored procedure para calcular o fatorial de um nmero.
3) Verifique a utilizao do Comando REPEAT
DROP PROCEDURE IF EXISTS mysql_test_repeat_loop$$
CREATE PROCEDURE mysql_test_repeat_loop()
BEGIN
DECLARE x INT;
DECLARE str VARCHAR(255);
SET x = 1;
SET str = '';
REPEAT
SET str = CONCAT(str,x,',');
SET x = x + 1;
UNTIL x > 5
END REPEAT;
SELECT str;
END$$
DELIMITER ;
CALL mysql_test_repeat_loop( )
4) Utilize a ideia do REPEAT da stored procedure acima, imprima os 20 primeiros
nmeros da srie de Fibonacci, separados por espao 1 1 2 3 5 8 13.........
Engenharia da Computao
Bibliografia
http://www.devmedia.com.br/stored-procedures-no-mysql/29030
http://www.mysqltutorial.org/stored-procedures-loop.aspx