El tipo de una variable puede ser cualquiera de los tipos base
existentes en la base de datos. type
en la sección de
declaraciones anterior se define como:
variable%TYPE
clase.campo%TYPE
variable
es el nombre de una variable previamente
declarada en la misma función y que es visible en ese
punto. clase
es el nombre de una tabla existente o una vista
donde campo
es el nombre de un atributo válido.
Utilizar el tipo clase.campo%TYPE
causa que PL/pgSQL busque las
definiciones de atributos en la primera invocación de la función,
durante la existencia de la conexión con servidor. Supongamos que se
tiene una tabla con un atributo de tipo char(20)
y que algunas
funciones PL/pgSQL que trabajan con el contenido en variables
locales. Luego, se decide que char(20)
no es suficiente para
almacenar la información, se hace un dump
, se destruye la tabla
y se recrea con la nueva definición para el atributo como
char(40)
y restaura la información. En este caso, olvidamos las
funciones definidas. Los cálculos dentro de ellas truncarán el valor a
veinte carácteres. Pero si el campo fué declarado como
clase.campo%TYPE
, entoces las funciones automáticamente
trabajarán con el cambio de tamaño, incluso si la nueva declaración
del campo es del tipo text
.