PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Funktion als Parameter für eine andere Funktion in Postgres

Da jede Funktion / Prozedur einen Eintrag in pg_proc haben muss, können Sie den Primärschlüssel zur Identifizierung der Prozedur verwenden. Damit würden auch die Probleme mit Prozeduren mit gleichem Namen, aber unterschiedlicher Anzahl von Parametern oder unterschiedlichen Parametertypen beseitigt.

Abkürzungen dafür sind die Typen regproc und regprocedure mit den dazugehörigen Abgüssen zur leichteren Handhabung. Schlagen Sie im Handbuch nach für diese.

Die Funktion zu identifizieren und weiterzugeben ist kein Problem:

select 'pg_database_size(oid)'::regprocedure; -- create "reference"
     regprocedure      
-----------------------
 pg_database_size(oid)

Verwenden Sie regprocedure als Parametertyp.

Das Problem, das ich noch nicht herausgefunden habe, ist, wie man so etwas auf bequeme Weise tatsächlich anruft.