Non è necessario utilizzare SELECT
per la valutazione della funzione.
id := to_number((SELECT code FROM buildings WHERE name = building)
|| floor || num::text,
'999999999');
un'altra possibilità (e solitamente migliore) è usare la funzione nell'elenco delle espressioni (elenco dei campi dei risultati)
id := (SELECT to_number(code || floor || num::text, '99999999')
FROM buildings WHERE name = building)
Usa SELECT
solo quando hai bisogno di una query per i dati, non per la valutazione di funzioni o variabili!