— QUESTÃO 01 —
CREATE OR REPLACE PROCEDURE promocaofunc (a_1972 in number, p_1972 in number)
IS
BEGIN
UPDATE funcionario
SET salario = salario * (1 + a_1972/100)
WHERE EXTRACT(year FROM data_nascimento) = 1972;
END promocaofunc;
-- QUESTÃO 02 --
CREATE OR REPLACE PROCEDURE atualizaprojeto???????????????????????
IS
BEGIN
UPDATE projetos
SET duracao = (SELECT SUM(horas_trabalhadas)/8
FROM participa)
WHERE projeto.codigo = participa.codigo_projeto;
END atualizaprojeto;
-- QUESTÃO 03 --
CREATE OR REPLACE TRIGGER tr_projeto
BEFORE DELETE ON projeto
FOR EACH ROW
BEGIN
DELETE FROM participa
WHERE participa.codigo_projeto = :o ld.codigo;
END tr_projeto;
-- QUESTÃO 04 --
CREATE OR REPLACE TRIGGER tr_funcionario
BEFORE UPDATE ON funcionario
FOR EACH ROW
BEGIN
SELECT salario
INTO :NEW.salario
FROM funcionario
IF :NEW.salario < :OLD.salario THEN
RAISE_APPLICATION_ERROR (-200,
' O novo salário não pode ser maior que o salário' || OLD.salario);
END IF;
END tr_funcionario;