Diferència entre revisions de la pàgina «M2 - Bases de dades / Exercicis UF3: Llenguatges SQL / Solucions PL-SQL T8»
(→T8- Cursors explícits) |
|||
Línia 1: | Línia 1: | ||
+ | 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) Ejecute el comando en el archivo lab_05_01.sql para volver a crear la tabla 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. | ||
+ | <pre> | ||
+ | DECLARE | ||
+ | v_ename employees.last_name%TYPE; | ||
+ | v_emp_sal employees.salary%TYPE := 6000; | ||
+ | </pre> | ||
+ | 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. | ||
+ | <pre> | ||
+ | BEGIN | ||
+ | SELECT last_name INTO v_ename | ||
+ | FROM employees | ||
+ | WHERE salary = v_emp_sal; | ||
+ | INSERT INTO messages (results) | ||
+ | VALUES (v_ename || ' - ' || v_emp_sal); | ||
+ | </pre> | ||
+ | 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>''”. |
Revisió del 08:31, 26 maig 2016
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) Ejecute el comando en el archivo lab_05_01.sql para volver a crear la tabla 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.
DECLARE v_ename employees.last_name%TYPE; v_emp_sal employees.salary%TYPE := 6000;
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.
BEGIN SELECT last_name INTO v_ename FROM employees WHERE salary = v_emp_sal; INSERT INTO messages (results) VALUES (v_ename || ' - ' || v_emp_sal);
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>”.