sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo obtener la lista de funciones en la base de datos en PostgreSQL junto con sus parámetros?

Hay una función útil para ayudarte: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);

muestra todas las funciones con argumentos. Puedes adaptar ese format encantamiento para generar las declaraciones deseadas, y si lo desea, LOOP sobre él para alimentar la declaración generada en EXECUTE en PL/PgSQL.

Crédito a Leo Hsu y Regina Obe en Postgres En línea por señalar oidvectortypes . Escribí funciones similares antes, pero usé expresiones anidadas complejas que esta función elimina.

Tenga en cuenta que en este caso no tiene que hacer ninguna generación de SQL personalizado , aunque. Simplemente use GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA myschema TO ... si está en un PostgreSQL vagamente reciente.