Nie musisz używać SELECT
do oceny funkcji.
id := to_number((SELECT code FROM buildings WHERE name = building)
|| floor || num::text,
'999999999');
inną możliwością (i zwykle lepszą) jest użycie funkcji na liście wyrażeń (lista pól wynikowych)
id := (SELECT to_number(code || floor || num::text, '99999999')
FROM buildings WHERE name = building)
Użyj SELECT
tylko wtedy, gdy potrzebujesz zapytania do danych, a nie do oceny funkcji lub zmiennej!