0% encontró este documento útil (0 votos)
61 vistas4 páginas

PLSQL 9 2 Practice - En.es

Cargado por

Javier Flores
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
61 vistas4 páginas

PLSQL 9 2 Practice - En.es

Cargado por

Javier Flores
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 4

Programación de bases de datos con

9-2: Uso de funciones en sentencias SQL


actividades de práctica PL / SQL
Vocabulario

Identifique la palabra de vocabulario para cada definición a continuación:

Una función creada por el programador PL / SQL que se puede usar en


cualquier lugar donde haya un valor o función.

Pruébalo / Resuélvelo

Las preguntas de esta Práctica utilizan copias parciales de las tablas de empleados y departamentos. Cree
estas copias ejecutando las siguientes instrucciones SQL:

CREAR TABLA f_emps


AS SELECT employee_id, last_name, salary, department_id
FROM empleados;

CREAR TABLA f_depts


COMO SELECCIONAR ID_departamento,
nombre_departamento DE departamentos;

1. Cree y ejecute una función sal_increase usando los siguientes dos ejemplos de código. El primero crea una
función que devuelve el nuevo salario de un empleado si se concede un aumento porcentual. El segundo
llama a esta función en una instrucción SELECT, utilizando un aumento del 5 por ciento.

CREAR O REEMPLAZAR LA FUNCIÓN sal_increase


(p_salary f_emps.salary% TYPE,
p_percent_incr NUMBER)
NÚMERO DE DEVOLUCIÓN
ES
COMENZAR

RETORNO (p_salary + (p_salary * p_percent_incr / 100));


FIN;

SELECCIONE apellido, salario, aumento_sal (salario,


5) DE f_emps;
Ahora, suponga que desea ver la misma información en su declaración SELECT, pero solo para aquellos
empleados para los que el aumento de salario sería superior a 10000. Escriba y pruebe dos
declaraciones SELECT para hacer esto. En el primero, NO use su función. En el segundo, usa tu función.
Utilice un aumento del 5 por ciento. ¿Cuál crees que es mejor y por qué?
Copyright © 2020, Oracle y / o sus afiliados. Reservados todos los derechos. Oracle y Java son marcas comerciales registradas de Oracle y / o sus afiliadas. Otros nombres pueden ser marcas comerciales de sus respectivos propietarios.
2. Nombra cinco lugares dentro de una declaración SQL donde se puede usar una función. El primero ya está hecho
para usted (piense en cuatro más).

• La lista de columnas de una instrucción SELECT

3. Modifique su bloque anónimo de la pregunta 1 (el bloque con las llamadas a la función sal_increase) para
ORDENAR los resultados por el aumento de salario en orden descendente (es decir, el aumento de salario
más alto primero).

4. Examine la siguiente declaración SELECT que enumera los salarios totales en cada departamento para aquellos
departamentos cuyo salario total es superior a 20000.

SELECCIONE ID_departamento, SUMA


(salario) DE f_emps
GROUP BY department_id
TENIENDO SUMA (salario)> 20000;

Modifique la declaración para que también enumere el salario total en cada departamento si se otorga un aumento
del 5 por ciento, y enumere aquellos departamentos cuyo salario total aumentado sería superior a 20000. Su
declaración modificada debe llamar a la función sal_increase dos veces, una vez en la columna_list y una vez en la
cláusula HAVING. Pruebe la declaración modificada.

5. La siguiente función acepta un ID de departamento como parámetro de entrada y verifica si el


departamento existe en la tabla f_depts. Ejecute este código para crear la función check_dept.

CREAR O REEMPLAZAR FUNCIÓN check_dept


(p_dept_id f_depts.department_id% TYPE)
RETORNO BOOLEANO ES
v_dept_id f_depts.department_id% TYPE;
COMENZAR

SELECCIONE departamento_id EN v_dept_id


DESDE f_depts
DONDE departamento_id = p_dept_id;
DEVUELVA VERDADERO;
EXCEPCIÓN
WHEN NO_DATA_FOUND THEN
RETURN FALSE;
FIN;

Examine la función anterior y explique por qué no se puede usar dentro de una declaración SQL. ¿Podría usarse
esta función dentro de una declaración PL / SQL? ¿Por qué o por qué no?

Copyright © 2020, Oracle y / o sus afiliados. Reservados todos los derechos. Oracle y Java son marcas comerciales registradas de Oracle y / o sus afiliadas. Otros nombres pueden ser marcas comerciales de sus respectivos propietarios.

2
6. Escriba un procedimiento llamado insert_emp que inserte un nuevo empleado en f_emps. Pase la identificación del
empleado, el apellido, el salario y la identificación del departamento al procedimiento como parámetros IN. El
procedimiento debe llamar a su función check_dept para verificar que el ID de departamento pasado existe en la
tabla f_depts. Si existe, inserte el empleado. Si no existe, use
DBMS_OUTPUT.PUT_LINE para mostrar un mensaje de error adecuado. Guarde su código.

7. Pruebe su procedimiento insert_emp desde un bloque anónimo utilizando los siguientes valores de
parámetro IN: employee_id = 800, last_name = Jokinen, salary = 5000 y department_id = 750. ¿Qué
sucedió y por qué?

8. Modifique su procedimiento insert_emp para que si el departamento no existe, el procedimiento primero inserte un nuevo
departamento con la identificación de departamento inexistente y un nombre de departamento de 'Temporal', y luego inserte
el empleado. Pruebe su procedimiento nuevamente con los mismos valores IN que se usaron en la pregunta anterior.

9. Ejecute dos sentencias SELECT para confirmar que el ID de departamento 750 y el ID de empleado 800 se agregaron a
las tablas F_DEPTS y F_EMPS, respectivamente.

10. Cree la función get_sal usando el siguiente código:

CREAR O REEMPLAZAR LA FUNCIÓN get_sal


(p_emp_id f_emps.employee_id% TYPE)
NÚMERO DE DEVOLUCIÓN
ES
v_salary f_emps.salary% TYPE;
COMENZAR

SELECCIONE salario EN v_salary


FROM f_emps
DONDE employee_id = p_emp_id;
RETURN v_salary;
FIN;

Utilice la función get_sal en la siguiente instrucción SQL (que intenta mover a todos los empleados con
salarios más altos al departamento 50). ¿Qué pasa y por qué?

ACTUALIZAR f_emps
SET ID_departamento = 50
DONDE get_sal (employee_id)> 10000;

Copyright © 2020, Oracle y / o sus afiliados. Reservados todos los derechos. Oracle y Java son marcas comerciales registradas de Oracle y / o sus afiliadas. Otros nombres pueden ser marcas comerciales de sus respectivos propietarios.

3
11. Examine la siguiente función (que duplica el salario de un empleado elegido) y la declaración SQL que la usa.
¿Qué pasará cuando se ejecute la instrucción SQL? ¿Por qué? Cree la función upd_sal, luego ejecute la
instrucción SELECT para confirmar su predicción.

CREAR O REEMPLAZAR FUNCIÓN upd_sal


(p_emp_id f_emps.employee_id% TYPE)
NÚMERO DE DEVOLUCIÓN
ES
v_salary f_emps.salary% TYPE;
COMENZAR

SELECCIONE salario EN v_salary


FROM f_emps
DONDE employee_id = p_emp_id;
salario_v: = salario_v * 2;
ACTUALIZAR f_emps
SET salario = v_salary
DONDE employee_id = p_emp_id;
RETURN v_salary;
FIN;

SELECCIONE employee_id, last_name, salary, upd_sal (employee_id)


FROM f_emps
DONDE employee_id = 100;

Copyright © 2020, Oracle y / o sus afiliados. Reservados todos los derechos. Oracle y Java son marcas comerciales registradas de Oracle y / o sus afiliadas. Otros nombres pueden ser marcas comerciales de sus respectivos propietarios.

También podría gustarte