En este tema, aprenderemos sobre la estructura básica de un bloque PL/SQL. Un bloque PL/SQL es la unidad básica de un programa PL/SQL y puede contener declaraciones, ejecuciones y manejo de excepciones. La estructura de un bloque PL/SQL se divide en tres secciones principales: Declarativa, Ejecutable y de Excepciones.

Secciones de un Bloque PL/SQL

  1. Sección Declarativa: Aquí se declaran las variables, constantes, cursores y otros elementos que se utilizarán en el bloque. Esta sección es opcional.
  2. Sección Ejecutable: Contiene las sentencias que realizan las operaciones deseadas. Esta sección es obligatoria.
  3. Sección de Excepciones: Maneja los errores que pueden ocurrir durante la ejecución del bloque. Esta sección es opcional.

Estructura General de un Bloque PL/SQL

DECLARE
   -- Sección Declarativa: Declaración de variables, constantes, cursores, etc.
   variable_name datatype [NOT NULL] [:= value];
BEGIN
   -- Sección Ejecutable: Sentencias SQL y PL/SQL
   -- Aquí se colocan las operaciones que se desean realizar
   NULL; -- Sentencia NULL es una sentencia válida que no hace nada
EXCEPTION
   -- Sección de Excepciones: Manejo de errores
   WHEN exception_name THEN
      -- Sentencias para manejar la excepción
      NULL; -- Sentencia NULL es una sentencia válida que no hace nada
END;
/

Ejemplo Práctico

Vamos a ver un ejemplo práctico de un bloque PL/SQL que declara una variable, le asigna un valor y maneja una posible excepción.

DECLARE
   -- Declaración de una variable
   v_salario NUMBER(7,2);
BEGIN
   -- Asignación de un valor a la variable
   v_salario := 5000.00;
   
   -- Intento de dividir por cero para generar una excepción
   v_salario := v_salario / 0;
   
   -- Imprimir el valor de la variable (esto no se ejecutará debido a la excepción)
   DBMS_OUTPUT.PUT_LINE('El salario es: ' || v_salario);
EXCEPTION
   -- Manejo de la excepción de división por cero
   WHEN ZERO_DIVIDE THEN
      DBMS_OUTPUT.PUT_LINE('Error: División por cero.');
END;
/

Explicación del Ejemplo

  1. Sección Declarativa:

    • v_salario NUMBER(7,2);: Declara una variable v_salario de tipo NUMBER con 7 dígitos en total y 2 decimales.
  2. Sección Ejecutable:

    • v_salario := 5000.00;: Asigna el valor 5000.00 a la variable v_salario.
    • v_salario := v_salario / 0;: Intenta dividir v_salario por 0, lo que genera una excepción ZERO_DIVIDE.
    • DBMS_OUTPUT.PUT_LINE('El salario es: ' || v_salario);: Esta línea no se ejecutará debido a la excepción.
  3. Sección de Excepciones:

    • WHEN ZERO_DIVIDE THEN: Captura la excepción ZERO_DIVIDE.
    • DBMS_OUTPUT.PUT_LINE('Error: División por cero.');: Imprime un mensaje de error.

Ejercicio Práctico

Ejercicio: Escribe un bloque PL/SQL que declare una variable v_nombre de tipo VARCHAR2, le asigne el valor 'Juan', y luego intente convertirla a un número, lo que generará una excepción VALUE_ERROR. Maneja la excepción imprimiendo un mensaje de error.

Solución:

DECLARE
   -- Declaración de una variable
   v_nombre VARCHAR2(50);
BEGIN
   -- Asignación de un valor a la variable
   v_nombre := 'Juan';
   
   -- Intento de convertir el valor a un número para generar una excepción
   v_nombre := TO_NUMBER(v_nombre);
   
   -- Imprimir el valor de la variable (esto no se ejecutará debido a la excepción)
   DBMS_OUTPUT.PUT_LINE('El nombre es: ' || v_nombre);
EXCEPTION
   -- Manejo de la excepción de conversión de valor
   WHEN VALUE_ERROR THEN
      DBMS_OUTPUT.PUT_LINE('Error: Conversión de valor.');
END;
/

Resumen

En esta lección, hemos aprendido sobre la estructura básica de un bloque PL/SQL, que incluye la sección declarativa, la sección ejecutable y la sección de excepciones. También hemos visto un ejemplo práctico y realizado un ejercicio para reforzar los conceptos aprendidos. En el próximo tema, exploraremos las variables y los tipos de datos en PL/SQL.

© Copyright 2024. Todos los derechos reservados