La asignación de un valor a una variable, renglón o campo de un registro, se escribe como
identifier := expression;
Si el tipo de dato resultante de la expresión no equivale al tipo de dato de la variable, o si la variable tiene un tamaño distinto, el valor resultante será ajustado implícitamente por el compilador de PL/pgSQL utilizando el tipo resultante y el tipo definido para la variable. Nótese que esto podría potencialmente generar errores en tiempo de ejecución por parte de las funciones de conversión.
Una asignación de una selección completa en un registro o renglón puede ser hecho de la siguiente manera
SELECT expresiones INTO destino FROM ...;
destino
puede ser un registro, una variable reglón o
una lista separada por comas de variables y campos de registro o
renglón.
Si un renglón o lista de variables es empleada como destino, los
valores deberán coincidir exactamente con la estructura del destino o
un error en tiempo de ejecución ocurrirá. La palabra reservada
FROM
puede ser seguida por cualquier calificación válida,
agrupamiento, ordenamiento, etc., que sea válida en una aserción
SELECT
.
Existe una variable especial llamada FOUND
de tipo booleano que
puede ser empleada inmediatamente después de un SELECT
INTO
para verificar que la asignación tuvo éxito.
SELECT * INTO myrec FROM EMP WHERE empname = myname; IF NOT FOUND THEN RAISE EXCEPTION ''El empleado % no fue encontrado'', myname; END IF;
Si la selección regresa varios renglones, sólo el primero será asignado a los campos destino, el resto será silenciosamente ignorado.