Vous n'avez pas besoin d'utiliser SELECT
pour l'évaluation de la fonction.
id := to_number((SELECT code FROM buildings WHERE name = building)
|| floor || num::text,
'999999999');
une autre possibilité (et généralement meilleure) consiste à utiliser la fonction dans la liste d'expressions (liste de champs de résultat)
id := (SELECT to_number(code || floor || num::text, '99999999')
FROM buildings WHERE name = building)
Utilisez SELECT
uniquement lorsque vous avez besoin d'une requête sur des données, pas pour une évaluation de fonction ou de variable !