Las variables deben declararse dentro de la sección DECLARE y deben seguir la siguiente sintaxis:

Nombre_variable [CONSTANT] TIPO [NOT NULL] [:= inicialización];


Cualquier variable que se declare y no se inicialice tiene por defecto el valor NULL. Los tipos posibles son todos aquellos válidos para SQL añadiendo algunos propios de PL/SQL. Para más información sobre los tipos propios de PL/SQL consultar el PL/SQL User’s Guide and Referente. Podemos hacer que una variable nunca tome valores nulos utilizando la cláusula NOT NULL, en este caso, hay que inicializar la variable.

La declaración de una constante es similar a la declaración de una variable, añadiendo la palabra CONSTANT y asignándole a continuación un valor a la constante.

Ejemplos:

Interes NUMBER(5,3);
Descripcion VARCHAR2(50) := 'inicial';
Fecha_max DATE;
Contabilizado BOOLEAN := TRUE;
PI CONSTANT REAL := 3.14159;

Otra forma de asignarle un valor a una variable es mediante la clausula INTO de la sentencia SELECT:

SELECT COUNT(*) INTO xNumFac FROM FACTURAS;

Atributos %TYPE y %ROWTYPE.

Se puede declarar el tipo de una variable tomándolo de otro identificador, usando el atributo %TYPE y se puede declarar el tipo de una variable también cuando es un tipo estructurado con el atributo %ROWTYPE. Esto es particularmente útil cuando una variable va a tomar valores de una columna de una tabla. Declarar variables con el atributo %TYPE tiene dos ventajas. Primero, no necesitamos conocer el tipo exacto de la columna de la tabla. Segundo, si cambiamos la definición y/o tipo de la columna de la tabla, el tipo de la variable cambia automáticamente en tiempo de ejecución.

En la declaración: si tenemos una variable “ y ” por ejemplo, y está declarada de tipo char podemos declarar otra variable “j” de la siguiente forma:

J y%type;

Lo mismo ocurriría para declarar una estructura que ya esta declarada como por ejemplo una tabla que ya tenemos declarada:

J employee%rowtype; --J tendría la misma estructura que la tabla employee.

En este caso para acceder a cada campo que tuviera el tabla employee mediante la variable J tendríamos que usar la estructura variable.nombre_campo.

Un bloque tiene acceso a los objetos identificados dentro de su esquema. Solo podremos acceder a los objetos del usuario donde estemos conectados y a los que ese usuario pueda acceder porque le hayan otorgado permisos.

Siguiente Tema: PL/SQL - Estructuras básicas de control