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