> Manuales > Tutorial de Oracle

Para poder trabajar con PL/SQL tenemos que tener claros una serie de conceptos y definiciones sobre todo en lo referente a compatibilidad de datos y estructuras de control.

Definición de datos compatibles con SQL

Este lenguaje suele tener unos tipos de datos compatibles con SQL para las columnas de las tablas, pero además puede tener otros tipos de datos propios.

Para declarar los datos en un bloque tenemos que utilizar una sintaxis como esta:

DECLARE
   nombre_variable Tipo dato;
BEGIN
...

Un ejemplo seria este:

DECLARE
   precio NUMBER(8,2);
   suma    NUMBER(2)    DEFAULT 0;
   prenda CHAR(20)    NOT NULL   :='Camiseta';
   descripción VARCHAR2(15);
BEGIN
....

Una de las ventajas de PL/SQL es que nos permite declarar una variable del mismo tipo que otra variable o que una columna de una tabla. Esto lo hacemos con el atributo %TYPE.

DECLARE
   nombre emple.nombre%TYPE;

Otra ventaja es que nos permite guardar el contenido de una fila entera de una tabla en una variable. Esto lo hacemos con el atributo %ROWTYPE

DECLARE
   mifila emple%ROWTYPE;

Con esto ya podemos trabajar con variables dentro de nuestro bloque. Ahora tenemos que ver las estructuras de control que podemos manejar dentro de nuestros bloques.

Estructuras de control

Las estructuras de control son básicamente las mismas que podemos utilizar en cualquier lenguaje de programación.

La vamos a dividir en estructuras de control alternativas (IF) y estructuras de control repetitivas (WHILE, FOR, LOOP)

La estructura del IF seria la siguiente:

IF <condición> THEN
   instrucciones
ELSEIF <condición> THEN
   instrucciones
....
ELSE
   instrucciones
END IF;

La estructura del WHILE seria la siguiente:

WHILE <condición> LOOP
   instrucciones
END LOOP;

La estructura del FOR se escribiría así:

FOR <variable> IN <mínimo> <máximo> LOOP
   instrucciones
END LOOP

Si queremos que nos vaya contando al revés, es decir de 5 hasta 0 por ejemplo, la sintaxis seria la siguiente:

FOR <variable> IN REVERSE
   <final>.......<inicio> LOOP
      instrucciones
      .....
END LOOP;

Y la estructura del LOOP seria de esta forma:

LOOP
   instrucciones
   ....
   EXIT WHEN <condición>
      instrucciones
   ...
END LOOP;

Cursores implicitos

Es importante saber que en nuestros bloques PL/SQL es bastante práctico el uso de cursores.
En este lenguaje el resultado de una consulta no va directamente al terminal del usuario, sino que se guarda en un área de memoria a la que se accede mediante los nombrados cursores. Para realizar una consulta en PL/SQL tenemos que guardar el resultado en cursores. Esto es muy sencillo y basta con meter un INTO en las consultas. Un ejemplo seria este:

select <columna/s> INTO <variable/s> from <tabla> [where]

select count(*) INTO vnum from ventas;

La variable que sigue al INTO recibe el valor de la columna. Por este motivo es importante que el tipo de dato de la variable coincida con el tipo de dato de la columna.

Sara Alvarez

Equipo DesarrolloWeb.com

Manual