06-plsql

Modelamiento y Gestión de Base de Datos Adolfo Jimenez 2020 Estructuras de control ▪ Para cambiar el flujo lógico de l

Views 151 Downloads 2 File size 741KB

Report DMCA / Copyright

DOWNLOAD FILE

Citation preview

Modelamiento y Gestión de Base de Datos Adolfo Jimenez 2020

Estructuras de control ▪ Para cambiar el flujo lógico de las sentencias en un bloque PL/SQL se utilizar una serie de estructuras de control como: – Sentencias IF – Expresiones CASE y – estructuras de control LOOP.

▪ Asigne 20 a un identificador si el nombre del empleado es ‘CAHUANA’.

Sentencias IF compuestas ▪ Las sentencias IF compuestas utilizan operadores lógicos.

▪ Ejemplo:

▪ Defina un identificador booleano como TRUE si la fecha de contratación es mayor de cinco años, de los contrario defínalo como FALSE. ▪ MONTHS_BETWEEN: Calcula la diferencia de meses entre la fecha actual y la variable v_hire_date.

Expresiones CASE ▪ La expresión CASE selecciona un resultado y lo devuelve. • Para seleccionar el resultado, la expresión CASE utiliza una expresión cuyo valor se usa para seleccionar una de varias alternativas.

Gestión de valores NULL ▪ Las comparaciones simples en las que se utilizan valores nulos siempre devuelven NULL. ▪ Si se aplica el operador lógico NOT a un valor nulo, se devolverá NULL.

▪ En las sentencias de control condicional, si la condición devuelve NULL, su secuencia de sentencias asociada no se ejecuta.

Gestión de valores NULL

Sentencias LOOP ▪ PL/SQL ofrece una serie de facilidades para estructurar bucles que repiten múltiples veces una o varias sentencias, entre ellas tenemos: – Un bucle básico para realizar acciones repetitivas. – Bucles FOR. – Bucles WHILE.

Bucles básicos

Bucles básicos

Bucles WHILE ▪ El bucle WHILE sirve para repetir una secuencia de sentencias hasta que la condición de control ya no sea TRUE.

Bucle WHILE

Bucles FOR ▪ Tienen la misma estructura que los bucles básicos. No se debe declarar el contador, ya que se declara implícitamente. límite_inferior ..límite_superior’; pueden ser literales, variables o expresiones.

Ejercicio 1 ▪ Ejecute un archivo el cual contiene la sentencia con una tabla y un solo campo. ▪ Incluya los números del 1 al 10, excluyendo el 6 y el 8. ▪ Verifique que el bloque PL/SQL funcione.

Ejercicio 2 ▪ Cree un bloque PL/SQL que calcule la comisión de un empleado determinado basándose en el sueldo de dicho empleado.

▪ El identificador del empleado en una variable. Pase el valor al bloque mediante una variable de sustitución. p_empnro = 100

Ejercicio 2 (cont…) Si el sueldo del empleado es menor de 5,000, muestre la bonificación del empleado como un 10% del sueldo. Si el sueldo del empleado está entre 5,000 y 10,000, muestre la bonificación del empleado como un 15% del sueldo. Si el sueldo del empleado supera los 10,000, muestre la bonificación del empleado como un 20% del sueldo.

Ejercicio 2 (cont…) Si el sueldo del empleado es NULL, muestre la bonificación del empleado como 0. Pruebe el bloque PL/SQL en cada caso utilizando los siguiente casos de prueba y compruebe cada bonificación.

Ejercicio 3 ▪ Cree una tabla EMP que sea una réplica de la tabla EMPLOYEES. Añada una nueva columna STARTS, del tipo de dato VARCHAR2 y con una longitud de valor 50 a la tabla EMP para guardar asteriscos(*).

Ejercicio 3 (cont…) ▪ Cree un bloque PL/SQL que recompense al empleado añadiendo un asterisco a la columna STARTS por cada 1,000 de sueldo de dicho empleado. – Use una variable para el identificador del empleado. – p_numemp = 104

Ejercicio 3 (cont…) – –

Inicialice la variable v_asterisco a NULL. Añada un asterisco a la cadena por cada 1,000 de sueldo. Por ejemplo, si el empleado tiene un sueldo de 8,000, la cadena de asteriscos debería tener 8 asteriscos. Y, si el empleado tiene un sueldo de 12,500, la cadena de asteriscos debería tener 13 asteriscos.

Ejercicio 3 (cont…) – –



Actualice la columna STARTS del empleado con la cadena de asteriscos. Pruebe con otros valores: ▪ p_empno = 174 ▪ p_empno = 176 Muestre las filas de la tabla EMP para verificar si el bloque PL/SQL se ha completado con éxito.

Ejercicio 3 (cont…) ▪ Resultado:

Ejercicio 4 ▪ Implemente un bloque anónimo para determinar si el PDB fue creado antes o después de los 30 días. Mostrar un mensaje que indique el caso.

▪ Verificar los campos de la tabla V$DATABASE (describe V$DATABASE)

Ejercicio 5 ▪ La tabla que contiene todos los objetos en la base de datos es DBA_OBJECTS. Hacer uso de la instrucción CASE para determinar si la cantidad de objetos con que cuenta es más de 4000, o se encuentra entre 2000 y 4000 o es menor a 2000.

Ejercicio 6 ▪ Implementar un bloque anónimo que considere la tabla EMPLOYEES y muestre los campos FIRST_NAME, LAST_NAME Y SALARY, siempre y cuando el salario sea superior a 8000. ▪ Usar la instrucción FOR, WHILE