next up previous contents index
Next: Tipos de datos Up: Estructura de PL/pgSQL Previous: Comentarios en PL/pgSQL   Índice General   Índice de Materias


Bloque de declaraciones

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.


next up previous contents index
Next: Tipos de datos Up: Estructura de PL/pgSQL Previous: Comentarios en PL/pgSQL   Índice General   Índice de Materias
Ismael Olea 2001-04-21