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_salario
de tipoNUMBER
con 7 dígitos en total y 2 decimales.
-
Sección Ejecutable:
v_salario := 5000.00;
: Asigna el valor5000.00
a la variablev_salario
.v_salario := v_salario / 0;
: Intenta dividirv_salario
por0
, 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