No necesitas usar SELECT
para evaluación de funciones.
id := to_number((SELECT code FROM buildings WHERE name = building)
|| floor || num::text,
'999999999');
otra posibilidad (y generalmente mejor) es usar la función en la lista de expresiones (lista de campos de resultados)
id := (SELECT to_number(code || floor || num::text, '99999999')
FROM buildings WHERE name = building)
Usa SELECT
¡solo cuando necesite una consulta de datos, no para evaluar funciones o variables!