PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Funziona come parametro per un'altra funzione in Postgres

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.