Optimización y Práctica de Código PL/SQL: Procedimientos, Excepciones y Fundamentos
Clasificado en Informática
Escrito el en
español con un tamaño de 6,58 KB
Ejercicios Prácticos de PL/SQL y Fundamentos de Programación
1. Desarrollo de Procedimiento para Visualización de Datos de Empleado
Objetivo: Desarrollar un procedimiento llamado VER_EMPLE que visualice el apellido y la fecha de alta de un empleado, pasándole como parámetro su número de empleado.
Implementación del Procedimiento VER_EMPLE
A continuación, se presenta la corrección del código PL/SQL para asegurar su funcionalidad, utilizando tipos de datos referenciados (%TYPE) y manejo de salida.
SET SERVEROUTPUT ON;
CREATE OR REPLACE PROCEDURE VER_EMPLE (
p_numempleado IN EMPLE.EMP_NO%TYPE
)
AS
v_apellido EMPLE.APELLIDO%TYPE;
v_fecha_alta EMPLE.FECHA_ALTA%TYPE; -- Se asume FECHA_ALTA como nombre de columna
BEGIN
-- Selección de datos
SELECT APELLIDO, FECHA_ALTA
INTO v_apellido, v_fecha_alta
FROM EMPLE
WHERE EMP_NO = p_numempleado;
-- Visualización de resultados
DBMS_OUTPUT.PUT_LINE ('Empleado: ' || v_apellido);
DBMS_OUTPUT.PUT_LINE ('Fecha de Alta: ' || TO_CHAR(v_fecha_alta, 'DD-MON-YYYY'));
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE ('Error: No se encontró el empleado con el número ' || p_numempleado);
END VER_EMPLE;
/2. Manejo de Excepciones en Procedimientos PL/SQL
A) Procedimiento ENCONTRAR_APE_EMPLEADO con Manejo de Excepciones
Objetivo: Escribir un procedimiento llamado ENCONTRAR_APE_EMPLEADO que permita encontrar el apellido de un empleado pasándole su número correspondiente, implementando un bloque de excepciones con tres opciones predefinidas.
CREATE OR REPLACE PROCEDURE ENCONTRAR_APE_EMPLEADO (
p_num_empleado IN EMPLE.EMP_NO%TYPE
)
AS
v_ape EMPLE.APELLIDO%TYPE;
BEGIN
-- Consulta para obtener el apellido
SELECT APELLIDO
INTO v_ape
FROM EMPLE
WHERE EMP_NO = p_num_empleado;
DBMS_OUTPUT.PUT_LINE ('El apellido del empleado ' || p_num_empleado || ' es: ' || v_ape);
EXCEPTION
-- 1. Excepción: No se encontraron datos
WHEN NO_DATA_FOUND THEN
RAISE_APPLICATION_ERROR(-20000, 'ERROR, NO HAY DATOS para el empleado ' || p_num_empleado);
-- 2. Excepción: Se encontraron demasiados datos
WHEN TOO_MANY_ROWS THEN
RAISE_APPLICATION_ERROR(-20000, 'ERROR, DEMASIADOS DATOS devueltos por la consulta.');
-- 3. Excepción: Cualquier otro error
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-20000, 'ERROR EN LA APLICACIÓN: ' || SQLERRM);
END ENCONTRAR_APE_EMPLEADO;
/Línea de Ejecución (Ejemplo)
Para ejecutar el procedimiento, se utiliza la sentencia EXEC o EXECUTE:
EXEC ENCONTRAR_APE_EMPLEADO(7369);B) Descripción de la Activación de las Excepciones
Las excepciones mencionadas en el programa se activan de la siguiente manera:
NO_DATA_FOUND: Se activa cuando la sentenciaSELECT INTOno devuelve ninguna fila. Se hace saltar pasando un número de empleado que no existe en la tablaEMPLE.TOO_MANY_ROWS: Se activa cuando la sentenciaSELECT INTOdevuelve más de una fila. Se hace saltar si la consulta no utiliza una clave única y devuelve múltiples registros.OTHERS: Captura cualquier otro error interno o de ejecución que no haya sido manejado explícitamente.
Fundamentos Teóricos de PL/SQL
3. Estructuras de Control Condicional (Alternativas) en PL/SQL
A continuación, se presenta la sintaxis correcta de las estructuras alternativas (condicionales) utilizadas en PL/SQL:
- Estructura Alternativa Simple (IF-THEN):
IF <condición> THEN <sentencias>; END IF; - Estructura Alternativa Doble (IF-THEN-ELSE):
IF <condición> THEN <sentencias_si_verdadero>; ELSE <sentencias_si_falso>; END IF; - Estructura Alternativa Múltiple (IF-ELSIF-ELSE):
IF <condición_1> THEN <sentencias_1>; ELSIF <condición_2> THEN <sentencias_2>; -- Se pueden añadir más ELSIF ELSE <sentencias_finales>; END IF;
4. Clasificación de Tipos de Datos en PL/SQL
Mencione los tipos de datos soportados por PL/SQL en las categorías Escalares, Compuestos y de Referencia.
A) Tipos de Datos Escalares
Son aquellos que almacenan valores simples y discretos.
- Ejemplos:
CHAR,NCHAR,VARCHAR2,NVARCHAR2,LONG,NUMBER,DATE,BOOLEAN.
B) Tipos de Datos Compuestos y de Referencia
Estos tipos permiten almacenar colecciones de datos o apuntar a estructuras de datos.
- Datos Compuestos: Almacenan colecciones de elementos. Incluyen Registros, Tablas Anidadas (T. ANIDADAS) y Arrays Asociativos (Tablas Indexadas por PL/SQL).
- Datos de Referencia: Almacenan punteros a otros elementos de datos, siendo el más común el Cursor de Referencia (
REF CURSOR).
5. Definición y Características de los Identificadores
A) ¿Qué es un Identificador?
Los identificadores son nombres definidos por el programador que se utilizan para nombrar objetos que intervienen en un programa (variables, constantes, procedimientos, etc.).
B) Características que deben cumplir los Identificadores
Para ser válidos, deben cumplir las siguientes reglas:
- Longitud: Pueden tener entre 1 y 30 caracteres.
- Carácter Inicial: El primero debe ser una letra.
- Caracteres Posteriores: Los siguientes pueden ser alfanuméricos (letras o números), el guion bajo (
_), el signo de dólar ($) o el signo de número (#). - Restricciones: No pueden incluir signos de puntuación (excepto los mencionados), espacios, ni palabras reservadas.
C) Ejemplos de Identificadores Válidos
V_APELLIDOX2_ANIOV_NUM_EMPLEADO