PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment obtenir la liste des fonctions de la base de données dans PostgreSQL avec ses paramètres ?

Il existe une fonction pratique pour vous aider :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);

affiche toutes les fonctions avec arguments. Vous pouvez adapter ce format incantation pour générer les déclarations souhaitées, et si vous le souhaitez, LOOP dessus pour alimenter l'instruction générée dans EXECUTE en PL/PgSQL.

Crédit à Leo Hsu et Regina Obe à Postgres En ligne pour indiquer oidvectortypes . J'ai déjà écrit des fonctions similaires, mais j'ai utilisé des expressions imbriquées complexes dont cette fonction se débarrasse.

Notez que dans ce cas, vous n'avez pas du tout à faire de génération SQL personnalisée , pourtant. Utilisez simplement GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA myschema TO ... si vous êtes sur un PostgreSQL vaguement récent.