Todas las variables, renglones y registros utilizados en un bloque o
sus bloques anidados deberán ser declarados en la sección de
declaraciones del bloque excepto por las variables de control de
ciclos de un FOR
que itera sobre un rango de valores
enteros. Los parámetros dados a una función PL/pgSQL son
automáticamente declarados con lo identificadores usuales
$n
, donde n
toma los valores desde 1 hasta
el número de argumentos pasados a la función. Las declaraciones tienen
la siguiente sintáxis:
name [ CONSTANT ] type [ NOT NULL ] [ DEFAULT | := value ];
Declara una variable del tipo base especificado. Si la variable es
declarada como CONSTANT
, el valor no podrá ser alterado dentro
de la función. Si el modificador NOT NULL
es especificado, la
asignación de un valor NULL
resultará en un error de
ejecución. Como el valor por omisión de todas las variables en SQL es
NULL
, todas aquellas que sean declaradas como NOT
NULL
deberán tener un valor por omisión especificado.
El valor por omisión es evaluado cada vez que la función es
llamada. Así, asignando el valor 'now'
a una variable de tipo
datetime
causará que la variable contenga la fecha y hora al
momento de ser invocada, no el de cuando la función fué precompilada
en código binario.
name class %ROWTYPE;
Declara un renglón con la estructura de registros de la clase dada. La
clase debe de ser una tabla existente o una vista en la base de
datos. Los campos del rengón son accedidos en notación
punto10.3. Los
parámetros a una función pueden ser tipos compuestos (renglones
completos de una tabla). En este caso, el identificador
correspondiente $n
será de tipo renglón, pero
deberá utilizarse por medio de un alias utilizando la instrucción
ALIAS
descrita más adelante. Sólo los atributos de usuario del
renglón de una tabla son accesibles en el renglón, no pueden obtenerse
las entradas de OID
ni de otros atributos del sistema, dado que
el renglón puede provenir de una vista y las vistas no tienen
atributos del sistema utilizables.
Los campos de tipo renglón heredan los tamaños de campos y precisiones numéricas de los tipos definidos en las tablas.
name RECORD;
Los registros son similares a los tipos renglón, pero no tienen una
estructura predefinida. Son utilizados en las selecciones y en los
ciclos FOR
para contener un renglón de una operación
SELECT
. El mismo registro puede ser utilizado varias
veces. Acceder a un registro o intentar asignar un valor a un campo de
un registro cuando no existe un renglón actual resulta en un error de
ejecución.
Los renglones NEW
y OLD
en un trigger son pasados al
procedimiento como registros automáticamente. Esto es necesario porque
en PostgreSQL un único trigger puede manejar eventos para diferentes
tablas.
name ALIAS FOR $n;
Para mejorar la lectura del código, es posible definir nombres alternos para un parámetro posicional a una función.
Este método es requerido para tipos compuestos que son pasados como
argumentos a funciones. La notación punto
$1.salario
empleada en SQL no es permitida en
PL/pgSQL.
RENAME oldname TO newname;
Permite cambiar el nombre de una variable, registro o renglón. Es útil
si NEW
u OLD
deben de ser refernciados por otro nombre
dentro de un procedimiento trigger.