Ponieważ każda funkcja / procedura musi mieć wpis w pg_proc, możesz użyć klucza podstawowego do identyfikacji procedury. Wyeliminowałoby to również problemy z procedurami o tej samej nazwie, ale z różną liczbą parametrów lub różnymi typami parametrów.
Skrótami dla tego są typy regproc
i regprocedure
z powiązanymi odlewami dla łatwiejszej obsługi. Wyszukaj podręcznik
dla nich.
Identyfikowanie funkcji i przekazywanie jej nie stanowi problemu:
select 'pg_database_size(oid)'::regprocedure; -- create "reference"
regprocedure
-----------------------
pg_database_size(oid)
Użyj regprocedure
jako typ parametru.
Problemem, którego jeszcze nie rozgryzłem, jest to, jak właściwie to nazwać w wygodny sposób.