Не е необходимо да използвате SELECT
за оценка на функцията.
id := to_number((SELECT code FROM buildings WHERE name = building)
|| floor || num::text,
'999999999');
друга възможност (и обикновено по-добра) е използването на функция в списък с изрази (списък с полета за резултати)
id := (SELECT to_number(code || floor || num::text, '99999999')
FROM buildings WHERE name = building)
Използвайте SELECT
само когато имате нужда от заявка към данни, а не за оценка на функция или променлива!