Archivo de Junio 2007

Capitulo 2

Junio 28, 2007

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’);
3 BEGIN
4 DBMS_OUTPUT.PUT_LINE(‘DENTRO DEL PRINCIPAL’);
5 DBMS_OUTPUT.PUT_LINE(10/0);
6 EXCEPTION
7 WHEN OTHERS THEN
8 DBMS_OUTPUT.PUT_LINE(‘ERROR EN BLOQUE ANIDADO’);
9 END;
10
11 DBMS_OUTPUT.PUT_LINE(50/10);
12 EXCEPTION
13 WHEN OTHERS THEN
14 DBMS_OUTPUT.PUT_LINE(‘ERROR EN PRINCIPAL’);
15 END;
16 /
PRINCIPAL
DENTRO DEL PRINCIPAL
ERROR EN BLOQUE ANIDADO
5
PL/SQL procedure successfully completed.

EJERCICIOS

  1. Entre a SQL*Plus o TOAD y escriba un bloque anónimo con las secciones de declaración, ejecución y excepciones.
  2. Escriba un bloque anónimo que contenga dos bloques anidados uno dentro del otro.
  3. Escriba un bloque anónimo que contenga dos bloques anidados dentro del bloque principal únicamente.
  4. Escriba un bloque anónimo dentro de la sección de excepciones.

Las soluciones las voy a poner en el siguiente capitulo…

 

Capitulo 1

Junio 16, 2007

Un poco de historia

Primero, ¿que es PL/SQL?, bueno PL/SQL significa Procedural Language extensions to the Structured Query Language, básicamente es la utilización de SQL dentro de un lenguaje procedural .

PL/SQL es un lenguaje basado en otro lenguaje de programación llamado ADA, el cual fue un lenguaje diseñado por el departamento de defensa de Estados Unidos. Ada es un lenguaje que se enfoca en la abstracción, ocultamiento de información y otras estrategias de diseño. Gracias a este diseño PL/SQL es un lenguaje muy poderoso que incluye la mayoría de los elementos de los lenguajes procedurales.

Entre los diferentes elementos se encuentran:

  • Amplia variedad de tipos de datos para declarar números, cadenas de caracteres, registros, arreglos (colecciones en Oracle) y en las ultimas versiones se ha incluido manejar XML.
  • Estructuras de control iterativas (ciclos), secuenciales, condicionales (if, case, etc).
  • Manejo de excepciones para atrapar errores.
  • Reutilización de código como procedimientos, funciones, triggers, objetos (POO) y paquetes.

Una de las cosas que a mi en lo personal me gusta mucho de PL/SQL es su integración con SQL, esto quiere decir que para realizar una consulta a la base de datos no es necesario hacer una conexión por medio de un API externo como ODBC, JDBC, etc para poderla realizar, si no que unicamente se incluye la sentencia SQL dentro del código de PL (de ahora en adelante me voy a referir a PL/SQL con PL) para seleccionar, actualizar, insertar o borrar información.

Inicios de PL/SQL

PL/SQL apareció a partir de la versión 6 de la base de datos Oracle como en 1988, y en un inicio como la mayoría de las tecnologías estaba muy limitado y únicamente estaba enfocada a realizar operaciones tipo batch aunque ya se le veía un futuro prometedor.

Portabilidad

Bueno, yo creo que no es necesario mencionarlo pero gracias a que PL/SQL esta integrado fuertemente a la base de datos este puede ejecutarse en cualquier plataforma en la cual este instalada la base de datos de Oracle, actualmente creo que se encuentra en la mayoría de las principales plataformas como Unix (Solaris, HP, etc), Windows, Linux (en la mayoría pero algunas versiones no son soportadas por Oracle como Ubuntu y otras más), Mac (en ciertas versiones) y creo que serian las mas importantes por el momento.

Donde encuentro PL/SQL

Aunque la programación y ejecución de PL/SQL normalmente se realiza dentro de la base de datos también se puede ejecutar en otras aplicaciones (de Oracle) sin necesidad de tener una base de datos, como por ejemplo: Forms…y creo que nada mas J o tal vez en APEX que es una aplicación Web.

NOTA : Aunque suene redundante PL/SQL es una tecnología de Oracle y únicamente se encuentra en sus productos, esto quiere decir que no se puede desarrollar PL/SQL en C o Java, aunque se pueden enviar sentencia PL/SQL por medio de ODBC,JDBC,etc a la base de datos para que sean ejecutadas dentro de la misma.

Versiones de PL/SQL

Bueno como había comentado, la versión 1.0 inicio con Oracle 6.0, actualmente esta la versión 10.2 de PL/SQL con Oracle 10g (10.2) y este año(2007) esta prevista una nueva versión de la base de datos 11g así que debe existir una nueva versión de PL/SQL mejorada.

Bueno es todo por el capitulo de hoy, así que hasta la próxima. Intentaré publicar un capitulo cada semana, pero no lo aseguro. J

Hello world!

Junio 16, 2007

Esta es mi primer publicación sobre PL/SQL mi intención es hacer un pequeño curso de Oracle PL/SQL en español, espero poder lograrlo, darle seguimiento y ponerlo en una secuencia lógica.

Bueno, comenzamos…