Тъй като всяка функция/процедура трябва да има запис в pg_proc, можете да използвате първичния ключ за идентифициране на процедурата. Това също би елиминирало проблемите с процедури с едно и също име, но различен брой параметри или различни типове параметри.
Съкращения за това са типовете regproc
и regprocedure
със свързаните отливки за по-лесно боравене. Потърсете ръководството
за тези.
Идентифицирането на функцията и нейното предаване не е проблем:
select 'pg_database_size(oid)'::regprocedure; -- create "reference"
regprocedure
-----------------------
pg_database_size(oid)
Използвайте regprocedure
като тип параметър.
Проблемът, който все още не разбрах, е как всъщност да извикам такова нещо по удобен начин.