Estructura de un bloque de PL/SQL
La unidad mínima de agrupamiento de código en PL/SQL es el bloque. Un bloque de PL/SQL contiene la ejecución, la declaración de variables y la sección de manejo de excepciones (errores). PL/SQL permite tener bloques anónimos y bloques nombrados (procedimientos, funciones, triggers, etc).
Un bloque de PL/SQL contiene las siguientes 4 secciones:
ENCABEZADO (HEADER)
IS
SECCIÓN DE DECLARACIÓN
BEGIN
SECCIÓN DE EJECUCIÓN
EXCEPTION
EXCEPCIONES
END;
Encabezado (opcional)
Esta sección es utilizada para los bloques nombrados como los stored procedures, functions, etc. Esta parte identifica al bloque por medio de un nombre.
Declaración (opcional)
Como su nombre lo indica aquí se realizan las declaraciones de variables, tipos de datos, cursores, etc.
Ejecución (obligatoria)
Es el corazón de un programa de PL/SQL, aquí es donde se realizan todas las operaciones que va a realizar el programa.
Excepciones (opcional)
Maneja las excepciones generadas por el programa en tiempo de ejecución.
Bloque Anónimo
Vamos a comenzar por el tipo de bloque mas sencillo que existe, éste tipo de bloque no contiene sección de encabezado por lo tanto no tiene un nombre asignado, por eso se llama bloque anónimo. Este tipo de bloque no puede ser llamado por otro código debido a que no tiene un handler ó manejador por el cuál se identifique al programa, básicamente los bloques anónimos sirven de contenedores para ejecutar pequeños scripts o hacer llamadas a otros bloques PL/SQL como procedures o funciones.
Sintaxis:
[ DECLARE
... declaración de variables, constantes, tipos, etc ... ]
BEGIN
… todo lo que se desea ejecutar …
[ EXCEPTION
... manejadores de excepciones ... ]
END;
Hay que notar que las secciones en “[ ]” son opcionales y no es necesario ponerlas en un bloque anónimo a menos que se vayan a utilizar.
EJEMPLOS
El primer ejemplo muestra un código de PL/SQL con lo mínimo que debe llevar un bloque anónimo.
|
SQL> BEGIN |
|
2 NULL; |
|
3 END; |
|
4 / |
|
PL/SQL procedure successfully completed. |
El bloque anterior únicamente incluye la sección de ejecución y como única instrucción esta la sentencia NULL que simplemente le dice a Oracle que no haga nada.
El siguiente ejemplo utiliza la sección de declaración para utilizar una variable de tipo cadena y desplegarla en la pantalla por medio del procedimiento PUT_LINE que funciona en SQL*Plus.
| SQL> DECLARE |
| 2 v_mensaje VARCHAR2(30); |
| 3 BEGIN |
| 4 v_mensaje := ‘Hola mundo’; |
| 5 dbms_output.put_line(v_mensaje); |
| 6 END; |
| 7 / |
| Hola mundo |
| PL/SQL procedure successfully completed. |
El siguiente ejemplo contiene la sección de exception:
| SQL> DECLARE |
| 2 v_resultado NUMBER; |
| 3 BEGIN |
| 4 v_resultado := 10/0; |
| 5 dbms_output.put_line(v_resultado); |
| 6 EXCEPTION |
| 7 WHEN OTHERS THEN |
| 8 DBMS_OUTPUT.PUT_LINE(‘Error en el programa’); |
| 9 END; |
| 10 / |
| Error en el programa |
| PL/SQL procedure successfully completed. |
El próximo ejemplo muestra un bloque anónimo dentro de otro bloque anónimo (bloques anidados).
SQL> BEGIN 2 DBMS_OUTPUT.PUT_LINE(‘PRINCIPAL’); |
EJERCICIOS
- Entre a SQL*Plus o TOAD y escriba un bloque anónimo con las secciones de declaración, ejecución y excepciones.
- Escriba un bloque anónimo que contenga dos bloques anidados uno dentro del otro.
- Escriba un bloque anónimo que contenga dos bloques anidados dentro del bloque principal únicamente.
- Escriba un bloque anónimo dentro de la sección de excepciones.
Las soluciones las voy a poner en el siguiente capitulo…