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.