CAMEX CM6 PLSQL Ejercicios

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 3

PL/SQL Oracle - Fundamentos

Manejo de excepciones en PL/SQL – Ejercicios


• Todo se hace dentro de la utilidad Cloud Oracle Live (no necesita instalación)

Ejercicio-1

Elaborar un bloque anónimo PL/SQL que devuelva un reporte de los empleados que tienen un
salario menor e igual a $ 2,800.00. El reporte debe mostrarse agrupado por departamentos. Los
valores de la columna deben ser por ancho fijo.

DECLARE
5 CURSOR dpto_employees_cursor IS
6 SELECT e.department_id,d.department_name,e.employee_id,e.first_name,e.last_na
7 FROM hr.employees e
8 INNER JOIN hr.departments d ON e.department_id=d.department_id
WHERE salary<2800
9 ORDER BY d.department_name DESC, salary DESC;
10 v_last_department_id hr.departments.department_id%TYPE:=0;
11 v_num NUMBER := 0;
12 BEGIN
13 DBMS_OUTPUT.PUT_LINE(LPAD('-',70,'-'));
DBMS_OUTPUT.PUT_LINE('INFORME DE EMPLEADOS POR DEPARTAMENTOS');
14 DBMS_OUTPUT.PUT_LINE(LPAD('-',70,'-'));
15 FOR emp IN dpto_employees_cursor
16 LOOP
17 IF v_last_department_id<>emp.department_id THEN
DBMS_OUTPUT.PUT_LINE(chr(13)||'DEPARTAMENTO: ' || UPPER(emp.department_na
18 DBMS_OUTPUT.PUT_LINE(LPAD('-',70,'-'));
19 ELSE
20 DBMS_OUTPUT.PUT_LINE(rpad(emp.employee_id, 10) || rpad(emp.first_name|| '
21 END IF;
22 v_last_department_id:=emp.department_id;
END LOOP;
23 END;
24

Conferencista: Hugo Godoy WhatsApp: 971-794594 Correo: [email protected]


PL/SQL Oracle - Fundamentos

Ejercicio 2

SET SERVEROUTPUT ON
DECLARE
v_lname VARCHAR2(15);
BEGIN
SELECT last_name INTO v_lname
FROM employees
WHERE first_name = 'John';
DBMS_OUTPUT.PUT_LINE ('El Apellido de John es:' ||v_lname);
EXCEPTION
WHEN TOO_MANY_ROWS THEN
DBMS_OUTPUT.PUT_LINE ('Tu consulta retorna más de un registro. Usa un Cursor.');
END;

Ejercicio 3

DECLARE
e_insert_excep EXCEPTION;
PRAGMA EXCEPTION_INIT(e_insert_excep, -01400);
BEGIN
INSERT INTO departments (department_id, department_name)
VALUES (280, NULL);
EXCEPTION
WHEN e_insert_excep THEN
DBMS_OUTPUT.PUT_LINE('INSERCIÓN FALLIDA.');
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;

El ejemplo intenta insertar el valor NULL en la columna de department_name de la tabla departments. Sin
embargo, la operación no tiene éxito porque department_name es una columna NOT NULL.

El ejemplo ilustra las tres etapas asociadas con la captura de un error no predefinido:
1. Declara el nombre de la excepción en la parte declarativa, utilizando la sintaxis:
excepción_name EXCEPCIÓN;
2. Asocia la excepción declarada con el número de error estándar de Oracle utilizando la función PRAGMA
EXCEPTION_INIT. Utilice la siguiente sintaxis:
PRAGMA EXCEPTION_INIT (excepción_name, error_number);
3. Referencia la excepción declarada dentro del control de excepciones correspondiente.

Conferencista: Hugo Godoy WhatsApp: 971-794594 Correo: [email protected]


PL/SQL Oracle - Fundamentos

Ejercicio 4

BEGIN
DELETE FROM comision_emp
WHERE codigo_emp = 100;
--
IF SQL%NOTFOUND THEN
RAISE_APPLICATION_ERROR(-20001, 'Ningún Registro Eliminado.');
ELSE
DBMS_OUTPUT.PUT_LINE(SQL%ROWCOUNT||'Registros Eliminados.');
END IF;
END;

El ejemplo muestra cómo usar el procedimiento: RAISE_APPLICATION_ERROR. El SCRIPT trata de eliminar el


registro con codigo_emp = 100 de la tabla comision_emp(Creada en ejemplos anteriores), como dicha tabla
no contiene este registro, el atributo SQL%NOTFOUND es TRUE por lo cual se ejecuta la
sentencia: RAISE_APPLICATION_ERROR.

Conferencista: Hugo Godoy WhatsApp: 971-794594 Correo: [email protected]

También podría gustarte