Poiché ogni funzione/procedura deve avere una voce in pg_proc, è possibile utilizzare la chiave primaria per identificare la procedura. Ciò eliminerebbe anche i problemi con procedure che hanno lo stesso nome ma diverso numero di parametri o diversi tipi di parametri.
Le scorciatoie per questo sono i tipi regproc
e regprocedure
con i relativi calchi per una più facile manipolazione. Consulta il manuale
per questi.
Identificare la funzione e passarla in giro non è un problema:
select 'pg_database_size(oid)'::regprocedure; -- create "reference"
regprocedure
-----------------------
pg_database_size(oid)
Usa la regprocedure
come tipo di parametro.
Il problema che non ho ancora capito è come chiamare effettivamente una cosa del genere in un modo conveniente.