Bloco: Set serveroutput on; DECLARE v_nome empregado.nome%TYPE := 'Joao Carlos'; BEGIN UPDATE empregado SET nome = v_nome WHERE nome = 'J'; EXCEPTION WHEN NO_DATA_FOUND THEN dbms_output.put_line('blabla'); END IF; END; / Cursor: Set serveroutput on; DECLARE v_precoPorLote NUMBER; v_nomePoco petroleoBruto.nomePoco%Type; CURSOR c_petroleo IS SELECT nomePoco, (quantidade/preco) AS precoPorLote FROM petroleoBruto; BEGIN OPEN c_petroleo; dbms_output.put_line('NOME PRECO POR LOTE'); LOOP FETCH c_petroleo INTO v_nomePoco, v_precoPorLote; EXIT WHEN c_petroleo%NOTFOUND; dbms_output.put_line(TO_CHAR(v_nomePoco)||' '||TO_CHAR(v_precoPorLote)); END LOOP; CLOSE c_petroleo; END; / Procedure: set serveroutput on; CREATE OR REPLACE PROCEDURE QuantidadeMaiorQue(p_qnt petroleoBruto.quantidade%TYPE) AS v_qnt petroleoBruto.quantidade%TYPE; v_soma petroleoBruto.quantidade%TYPE := 0; CURSOR c_petroleoBruto IS SELECT quantidade FROM petroleoBruto; BEGIN OPEN c_petroleoBruto; LOOP FETCH c_petroleoBruto INTO v_qnt; EXIT WHEN c_petroleoBruto%NOTFOUND; IF v_qnt > p_qnt THEN v_soma := v_soma + v_qnt; END IF; END LOOP; DBMS_OUTPUT.PUT_LINE('A soma de todas as quantidades é: '||TO_CHAR(v_soma)); CLOSE c_petroleoBruto; COMMIT; END QuantidadeMaiorQue; / Function: CREATE OR REPLACE FUNCTION MaiorSalarioMenorQue(p_salario NUMBER) RETURN NUMBER IS retorno NUMBER; BEGIN SELECT MAX(salario) INTO retorno FROM empregado WHERE salario < p_salario; return retorno; END MaiorSalarioMenorQue; / Packages: CREATE OR REPLACE PACKAGE exercicios IS BEGIN END exercicios; / CREATE OR REPLACE PACKAGE BODY exercicios IS BEGIN END exercicios; CREATE OR REPLACE TRIGGER novoSalario BEFORE UPDATE ON empregado FOR EACH ROW BEGIN IF :NEW.salario < :OLD.salario THEN RAISE_APPLICATION_ERROR(2424, 'Como tu ker diminuir?'); END IF; END novoSalario; /