Practica Leccion 8

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

Oracle Database 10g: Program with PL/SQL 2008

Práctica 8. 
Los ejercicios deben realizarse con el mismo usuario con los que se han realizado las
prácticas anteriores.

1. El propósito de este ejercicio es ejemplificar el uso de excepciones predefinidas.


Escriba un bloque PL/SQL para recuperar el nombre los empleados que ganen lo que
se haya indicado.
a. Elimina todos los registros de la tabla messages. Utilice el comando DEFINE para
definir la variable sal e inicialícela con 6000.
b. En la sección declarativa declare dos variables: ename de tipo
employees.last_name y emp_sal de tipo employees.salary. Pase el valor de
la variable de sustitución a emp_sal.
c. En la sección ejecutable, consulte el apellido de los empleados cuyo salario es
igual al valor de la variable emp_sal.
Note: No usar cursores explícitos.
Si el salario capturado devuelve solo un registro, inserte en la tabla messages el
nombre y salario del empleado.
d. Si el salario no devuelve registros, maneja la excepción con un controlador
apropiado e inserta en la tabla messages el mensaje: “No employee with a
salary of <salary>.”
e. Si el salario devuelve más de un registro, maneja la excepción de forma
apropiada e inserta en la tabla el siguiente mensaje “More than one employee
with a salary of <salary>.”
f. Maneje cualquier otra excepción con un controlador apropiado e inserta el
siguiente mensaje en la tabla messages “Some other error occurred.”
g. Despliegue los registros de la tabla messages para verificar que el bloque
PL/SQL fue ejecutado satisfactoriamente. Un ejemplo de salida a continuación:

2. El propósito de este ejercicio es ejemplificar cómo declarar excepciones con un error


estándar del servidor Oracle. Utilice el error del servidor Oracle ORA-02292 (restricción
de integridad violada – registro dependiente encontrado).
a. En la sección declarativa, declare la excepción childrecord_exists. Asocie la
excepción declarada con el número de error –02292.
b. En la sección ejecutable, despliegue “Deleting department 40.....”. Incluir la
sentencia DELETE para eliminar el departamento con clave 40.
c. Incluir una sección para manejar excepciones que controle la excepción
childrecord_exists y despliegue el mensaje apropiado. Un ejemplo de la salida
a continuación.

Práctica 8
1
Oracle Database 10g: Program with PL/SQL 2008

3. Cargue el script lab_07_04_soln.sql.


a. Analice la sección declarativa del bloque principal. Observe que la excepción
no_such_employee está declarada.
b. Busque el comentario “RAISE EXCEPTION HERE” –(Genere aquí la excepción)-. Si
el valor de emp_id no se encuentra entre 100 y 206, genere la excepción
no_such_employee.
c. Busque el comentario “INCLUDE EXCEPTION SECTION FOR OUTER BLOCK” –
(Incluya la sección EXCEPTION para el bloque principal) – y controle las
excepciones no_such_employee y too_many_rows. Despliegue los mensajes
apropiados cuando la excepción tenga lugar. En la tabla employees un solo
empleado trabaja en el departamento de Recursos Humanos por lo que el
código está escrito acorde a eso. La excepción too_many_rows es controlada
para indicar que la sentencia SELECT devuelve más de un empleado en el
departamento de Recursos Humanos.
d. Cierre el bloque principal.
e. Guarde su script con el nombre lab_08_03_soln.sql.
f. Ejecute el script. Introduzca número de empleado y número de departamento
y observe el resultado. Introduzca diferentes valores y compruebe para
diferentes condiciones.
Ejemplo de resultado para el empleado 203 y departamento 100 se muestra a
continuación.

Práctica 8
2

También podría gustarte