Cláusula DECLARE en PL/SQL

El propósito de la cláusula DECLARE es definir cualquier objeto interno que necesitaremos durante el programa. Dichos objetos los podemos clasificar en:

Variables, con su tipo de dato correspondiente
Boolean, que solo puede contener los valores TRUE, FALSE o NULL
Constantes, elementos a los que se les asigna un valor y ya no se puede cambiar después
Record, estructura de una tabla en una base de datos
Table, estructura que almacena en memoria elementos a modo de tabla
Tipos definidos por el usuario, combinando tipos de objeto predefinidos

Hay ciertas reglas para nombrar estos objetos, por ejemplo que la longitud debe ser como máximo 30 caracteres. Hay caracteres permitidos ($, #, _) y prohibidos (&, -, /, espacios en blanco).

Los tipos de datos que más habitualmente necesitaremos para nuestras variables son los esperados:
DATE, BOOLEAN, CHAR, VARCHAR2, NUMBER(precisión, escala), PLS_INTEGER, BINARY_FLOAT, BINARY_DOUBLE y ROWID(ID de una fila en una base de datos).

Al declarar una variable podemos asignarle un valor inicial por defecto. Hay 2 formas idénticas para hacerlo.  Además podemos obligar a que una variable nunca pueda contener valores nulos (en estos casos obligatoriamente tendremos que asignar un valor al declararlas). Veamos algunos ejemplos:


Al ser PL/SQL un lenguaje de programación integrado en las bases de datos ORACLE, era de esperar que el programador tuviera atributos de tipos de dato tan interesantes como %TYPE %ROWTYPE.  Profundicemos un poco más en estas características. En la tabla "Employee" uno de los campos es "Salary", de tipo NUMBER(6). En nuestro programa tendremos que hacer un uso intensivo de valores de esta columna, así que lo primero que podríamos pensar es en definir una variable "SalarioEmpleado", como la del ejemplo anterior. Sin embargo lo recomendado es asociar dicha variable al tipo que tenga la columna en la tabla, usando %TYPE. El "siguiente nivel" sería asociar a una variable toda una fila de una tabla. Y para ello usamos %ROWTYPE.


Además el lenguaje soporta estructuras avanzadas específicas que representan tablas y registros: TYPE...TABLE y TYPE ... RECORD. Vamos a verlas en funcionamiento con algunos ejemplos:



No hay comentarios :

Publicar un comentario

Buscar en el Blog: