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
- 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.
- Sección Ejecutable: Contiene las sentencias que realizan las operaciones deseadas. Esta sección es obligatoria.
- 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
-
Sección Declarativa:
v_salario NUMBER(7,2);: Declara una variablev_salariode tipoNUMBERcon 7 dígitos en total y 2 decimales.
-
Sección Ejecutable:
v_salario := 5000.00;: Asigna el valor5000.00a la variablev_salario.v_salario := v_salario / 0;: Intenta dividirv_salariopor0, lo que genera una excepciónZERO_DIVIDE.DBMS_OUTPUT.PUT_LINE('El salario es: ' || v_salario);: Esta línea no se ejecutará debido a la excepción.
-
Sección de Excepciones:
WHEN ZERO_DIVIDE THEN: Captura la excepciónZERO_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.
Curso de PL/SQL
Módulo 1: Introducción a PL/SQL
Módulo 2: Fundamentos de PL/SQL
- Estructura del Bloque PL/SQL
- Variables y Tipos de Datos
- Estructuras de Control
- Cursores
- Manejo de Excepciones
