Puisque chaque fonction/procédure doit avoir une entrée dans pg_proc, vous pouvez utiliser la clé primaire pour identifier la procédure. Cela éliminerait également les problèmes avec les procédures ayant le même nom mais un nombre différent de paramètres ou des types de paramètres différents.
Les raccourcis pour cela sont les types regproc
et regprocedure
avec les moulages associés pour une manipulation plus aisée. Consultez le manuel
pour ceux-ci.
Identifier la fonction et la transmettre n'est pas un problème :
select 'pg_database_size(oid)'::regprocedure; -- create "reference"
regprocedure
-----------------------
pg_database_size(oid)
Utilisez regprocedure
comme type de paramètre.
Le problème que je n'ai pas encore compris est de savoir comment appeler une telle chose de manière pratique.