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

Come ottenere l'elenco delle funzioni nel database in PostgreSQL insieme ai suoi parametri?

C'è una funzione utile per aiutarti:oidvectortypes .

SELECT format('%I.%I(%s)', ns.nspname, p.proname, oidvectortypes(p.proargtypes)) 
FROM pg_proc p INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid);

mostra tutte le funzioni con argomenti. Puoi adattare quel format incantesimo per generare le istruzioni desiderate e, se lo desideri, LOOP su di esso per inserire l'istruzione generata in EXECUTE in PL/PgSQL.

Ringraziamo Leo Hsu e Regina Obe a Postgres In linea per indicare oidvectortypes . In precedenza ho scritto funzioni simili, ma ho utilizzato espressioni nidificate complesse di cui questa funzione elimina la necessità.

Nota che in questo caso non devi eseguire alcuna generazione SQL personalizzata , anche se. Usa semplicemente GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA myschema TO ... se sei su un PostgreSQL vagamente recente.