Diferència entre revisions de la pàgina «P8-Gestió d'excepcions»
(Es crea la pàgina amb «==1) Manejo de Excepciones Predefinidas== En esta práctica escribirá un bloque PL/SQL que aplique una excepción predefinida para procesar un único registro a la v…».) |
|||
(Hi ha 9 revisions intermèdies del mateix usuari que no es mostren) | |||
Línia 1: | Línia 1: | ||
− | ==1) Manejo de Excepciones Predefinidas== | + | == 1) Manejo de Excepciones Predefinidas == |
En esta práctica escribirá un bloque PL/SQL que aplique una excepción predefinida para | En esta práctica escribirá un bloque PL/SQL que aplique una excepción predefinida para | ||
procesar un único registro a la vez. El bloque PL/SQL seleccionará el nombre del | procesar un único registro a la vez. El bloque PL/SQL seleccionará el nombre del | ||
empleado con un valor de salario determinado. | empleado con un valor de salario determinado. | ||
− | 1) | + | 1.1) Vuelve a crear o vacía la tabla messages. |
− | messages. | ||
− | 2) En la sección de declaraciones, declare dos variables: v_ename del tipo employees.last_name y v_emp_sal del tipo employees.salary. Inicialice la última en 6000. | + | 1.2) En la sección de declaraciones, declare dos variables: v_ename del tipo employees.last_name y v_emp_sal del tipo employees.salary. Inicialice la última en 6000. |
− | 3) En la sección ejecutable, recupere los apellidos de los empleados cuyos salarios son | + | 1.3) En la sección ejecutable, recupere los apellidos de los empleados cuyos salarios son |
iguales al valor de v_emp_sal. Si el salario introducido devuelve sólo una fila, | iguales al valor de v_emp_sal. Si el salario introducido devuelve sólo una fila, | ||
inserte en la tabla messages el nombre y el importe del salario del empleado. | inserte en la tabla messages el nombre y el importe del salario del empleado. | ||
Nota: no utilice cursores explícitos. | Nota: no utilice cursores explícitos. | ||
− | 4) Si el salario introducido no devuelve ninguna fila, maneje la excepción con un | + | 1.4) Si el salario introducido no devuelve ninguna fila, maneje la excepción con un |
manejador de excepciones adecuado e inserte en la tabla messages el mensaje “No | manejador de excepciones adecuado e inserte en la tabla messages el mensaje “No | ||
employee with a salary of <salary>”. | employee with a salary of <salary>”. | ||
− | 5) Si el salario introducido devuelve varias filas, maneje la excepción con un manejador | + | 1.5) Si el salario introducido devuelve varias filas, maneje la excepción con un manejador |
de excepciones adecuado e inserte en la tabla messages el mensaje “More than one | de excepciones adecuado e inserte en la tabla messages el mensaje “More than one | ||
employee with a salary of <salary>”. | employee with a salary of <salary>”. | ||
− | 6) Maneje cualquier otra excepción con un manejador de excepciones adecuado e inserte | + | 1.6) Maneje cualquier otra excepción con un manejador de excepciones adecuado e inserte |
en la tabla messages el mensaje “Some other error occurred”. | en la tabla messages el mensaje “Some other error occurred”. | ||
− | 7) Muestre las filas de la tabla messages para comprobar si el bloque PL/SQL se ha | + | 1.7) Muestre las filas de la tabla messages para comprobar si el bloque PL/SQL se ha |
ejecutado correctamente. La salida es la siguiente: | ejecutado correctamente. La salida es la siguiente: | ||
− | [[Fitxer:.png| | + | [[Fitxer:8-1.png|350px|resultat]] |
− | 8) Cambie el valor inicializado de v_emp_sal a 2000 y vuelva a ejecutar. La salida es | + | |
+ | 1.8) Cambie el valor inicializado de v_emp_sal a 2000 y vuelva a ejecutar. La salida es | ||
la siguiente: | la siguiente: | ||
− | 2 | + | |
+ | [[Fitxer:8-2.png|350px|sortida]] | ||
== 2) Manejo de Excepciones de Oracle Server Estándar == | == 2) Manejo de Excepciones de Oracle Server Estándar == | ||
Línia 36: | Línia 37: | ||
Oracle Server ORA-02292 (integrity constraint violated – child | Oracle Server ORA-02292 (integrity constraint violated – child | ||
record found). El bloque comprobará la excepción y mostrará el mensaje de error. | record found). El bloque comprobará la excepción y mostrará el mensaje de error. | ||
− | 1) En la sección de declaraciones, declare una excepción e_childrecord_exists. | + | |
+ | 2.1) En la sección de declaraciones, declare una excepción e_childrecord_exists. | ||
Asocie la excepción declarada al error de Oracle Server estándar –02292. | Asocie la excepción declarada al error de Oracle Server estándar –02292. | ||
− | 2) En la sección ejecutable, muestre “Deleting department 40....” Incluya una sentencia | + | 2.2) En la sección ejecutable, muestre “Deleting department 40....” Incluya una sentencia |
DELETE para suprimir el departamento con department_id 40. | DELETE para suprimir el departamento con department_id 40. | ||
− | 3) Incluya una sección de excepciones para manejar la excepción | + | 2.3) Incluya una sección de excepciones para manejar la excepción |
e_childrecord_exists y muestre el mensaje adecuado. | e_childrecord_exists y muestre el mensaje adecuado. | ||
La salida de ejemplo es la siguiente: | La salida de ejemplo es la siguiente: |
Revisió de 19:40, 15 des 2014
1) Manejo de Excepciones Predefinidas
En esta práctica escribirá un bloque PL/SQL que aplique una excepción predefinida para procesar un único registro a la vez. El bloque PL/SQL seleccionará el nombre del empleado con un valor de salario determinado.
1.1) Vuelve a crear o vacía la tabla messages.
1.2) En la sección de declaraciones, declare dos variables: v_ename del tipo employees.last_name y v_emp_sal del tipo employees.salary. Inicialice la última en 6000.
1.3) En la sección ejecutable, recupere los apellidos de los empleados cuyos salarios son iguales al valor de v_emp_sal. Si el salario introducido devuelve sólo una fila, inserte en la tabla messages el nombre y el importe del salario del empleado. Nota: no utilice cursores explícitos.
1.4) Si el salario introducido no devuelve ninguna fila, maneje la excepción con un manejador de excepciones adecuado e inserte en la tabla messages el mensaje “No employee with a salary of <salary>”.
1.5) Si el salario introducido devuelve varias filas, maneje la excepción con un manejador de excepciones adecuado e inserte en la tabla messages el mensaje “More than one employee with a salary of <salary>”.
1.6) Maneje cualquier otra excepción con un manejador de excepciones adecuado e inserte en la tabla messages el mensaje “Some other error occurred”.
1.7) Muestre las filas de la tabla messages para comprobar si el bloque PL/SQL se ha ejecutado correctamente. La salida es la siguiente:
1.8) Cambie el valor inicializado de v_emp_sal a 2000 y vuelva a ejecutar. La salida es la siguiente:
2) Manejo de Excepciones de Oracle Server Estándar
En esta práctica, escribirá un bloque PL/SQL que declare una excepción para el error de Oracle Server ORA-02292 (integrity constraint violated – child record found). El bloque comprobará la excepción y mostrará el mensaje de error.
2.1) En la sección de declaraciones, declare una excepción e_childrecord_exists. Asocie la excepción declarada al error de Oracle Server estándar –02292.
2.2) En la sección ejecutable, muestre “Deleting department 40....” Incluya una sentencia DELETE para suprimir el departamento con department_id 40.
2.3) Incluya una sección de excepciones para manejar la excepción e_childrecord_exists y muestre el mensaje adecuado. La salida de ejemplo es la siguiente: