
En cualquier lenguaje de programación, las variables y las constantes tienen un tipo de dato asignado (bien sea explícitamente o implícitamente). Dependiendo del tipo de dato el lenguaje de programación sabrá la estructura que utilizará para su almacenamiento, las restricciones en los valores que puede aceptar, la precisión del mismo, etc.
En PL/SQL contamos con todos los tipos de datos simples utilizados en SQL y algunos más. En este apartado vamos a enumerar los más utilizados.
Numéricos.
BINARY_INTEGER
: Tipo de dato numérico cuyo rango es de -2147483647 .. 2147483647. PL/SQL además define algunos subtipos de éste:NATURAL
,NATURALN
,POSITIVE
,POSITIVEN
,SIGNTYPE
.NUMBER
: Tipo de dato numérico para almacenar números racionales. Podemos especificar su escala (-84 .. 127) y su precisión (1 .. 38). La escala indica cuándo se redondea y hacia dónde. Ejemplos. escala=2: 8.234 -> 8.23, escala=-3: 7689 -> 8000. Si se define un NUMBER(6,2) estamos indicando que son 6 dígitos numéricos de los cuales 2 son decimales. PL/SQL también define algunos subtipos como:DEC
,DECIMAL
,DOUBLE
PRECISION
,FLOAT
,INTEGER
,INT
,NUMERIC
,REAL
,SMALLINT
.PLS_INTEGER
: Tipo de datos numérico cuyo rango es el mismo que el del tipo de datoBINARY_INTEGER
, pero que su representación es distinta por lo que las operaciones aritméticas llevadas a cabo con los mismos serán más eficientes que en los dos casos anteriores.
Alfanuméricos.
CHAR(n)
: Array de n caracteres, máximo 2000 bytes. Si no especificamos longitud sería 1. Ocupa en memoria n caracteres.LONG
: Array de caracteres con un máximo de 32760 bytes.RAW
: Array de bytes con un número máximo de 2000.LONG RAW
: Array de bytes con un máximo de 32760.VARCHAR2(n)
: Tipo de dato para almacenar cadenas de longitud variable con un máximo de 32760. Ocupa en memoria hasta n caracteres.
Grandes objetos.
BFILE
: Puntero a un fichero del Sistema Operativo.BLOB
: Objeto binario con una capacidad de 4 GB.CLOB
: Objeto carácter con una capacidad de 2 GB.
Otros.
BOOLEAN
:TRUE
/FALSE
.DATE
: Tipo de dato para almacenar valores día/hora desde el 1 enero de 4712 a.c. hasta el 31 diciembre de 4712 d.c.
Hemos visto los tipos de datos simples más usuales. Los tipos de datos compuestos los dejaremos para posteriores apartados.
Atributo %TYPE.
Las variables PL/SQL se suelen declarar para sostener y manipular los datos almacenados en una Base de Datos. Cuando declares variables PL/SQL para guardar los valores de columnas, debes asegurarte de que la variable tenga la precisión (tamaño) y el tipo de dato correcto. Si no es así se puede producir un error durante la ejecución.
Cuando se utiliza el atributo %TYPE para declarar una variable estamos indicando que tiene el mismo tipo de datos que la variable especificada. Normalmente se relaciona con una columna de la BD indicando el nombre de la tabla de base de datos y el nombre de la columna. Si se hace referencia a una variable declarada anteriormente, se indicará el nombre de la variable previamente declarada a la variable por declarar.
Una ventaja del uso de este atributo, es que si cambia la definición de una columna de la BD, no será necesario cambiar la declaración de la variable.
Ejemplos:
DECLARE
nombre_oficina oficinas.nombre%type; -- la variable nombre_oficina tomará el mismo tipo de dato que la columna nombre de la tabla oficinas
vx number(5,2); -- Variable numérica de 5 dígitos, dos de los cuales son decimales
vy vx%type; -- la variable vy tomará el mismo tipo de dato que tenga la variable vx
Hemos visto los tipos de datos simples más usuales. Los tipos de datos compuestos los dejaremos para posteriores apartados.
Un puntero o apuntador es una variable que referencia una región de memoria; en otras palabras es una variable cuyo valor es una dirección de memoria.