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:

  1. NO_DATA_FOUND: Se activa cuando la sentencia SELECT INTO no devuelve ninguna fila. Se hace saltar pasando un número de empleado que no existe en la tabla EMPLE.
  2. TOO_MANY_ROWS: Se activa cuando la sentencia SELECT INTO devuelve más de una fila. Se hace saltar si la consulta no utiliza una clave única y devuelve múltiples registros.
  3. 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:

  1. Estructura Alternativa Simple (IF-THEN):
    IF <condición> THEN
        <sentencias>;
    END IF;
  2. Estructura Alternativa Doble (IF-THEN-ELSE):
    IF <condición> THEN
        <sentencias_si_verdadero>;
    ELSE
        <sentencias_si_falso>;
    END IF;
  3. 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

  1. V_APELLIDO
  2. X2_ANIO
  3. V_NUM_EMPLEADO

Entradas relacionadas: