Diferència entre revisions de la pàgina «P8-Gestió d'excepcions»

De wikiserver
Dreceres ràpides: navegació, cerca
Línia 1: Línia 1:
==1) Manejo de Excepciones Predefinidas==
+
==8-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) Ejecute el comando en el archivo lab_05_01.sql para volver a crear la tabla
+
1.1) Ejecute el comando en el archivo lab_05_01.sql para volver a crear 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:8-1.png|250px|resultat]]
 
[[Fitxer:8-1.png|250px|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:
  
Línia 35: Línia 35:
  
  
== 2) Manejo de Excepciones de Oracle Server Estándar ==
+
== 8-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
 
   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
 
   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ó del 18:33, 1 des 2014

8-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) Ejecute el comando en el archivo lab_05_01.sql para volver a crear 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:

resultat

1.8) Cambie el valor inicializado de v_emp_sal a 2000 y vuelva a ejecutar. La salida es la siguiente:

sortida


8-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: