Quiero poder conectarme a una base de datos PostgreSQL y encontrar todas las funciones para un esquema particular.
Pensé que podría hacer alguna consulta a pg_catalog o information_schema y obtener una lista de todas las funciones, pero no puedo entender dónde están almacenados los nombres y parámetros. Estoy buscando una consulta que me dé el nombre de la función y los tipos de parámetros que toma (y en qué orden los toma).
¿Hay alguna forma de hacer esto?
postgresql
function
Rudd Zwolinski
fuente
fuente

Después de buscar un poco, pude encontrar la
information_schema.routinesmesa y lasinformation_schema.parametersmesas. Utilizándolos, se puede construir una consulta para este propósito. LEFT JOIN, en lugar de JOIN, es necesario para recuperar funciones sin parámetros.fuente
oidvectortypesrealmente útil también. Ver nueva respuesta: stackoverflow.com/a/24034604/398670Si alguien está interesado aquí es qué consulta se ejecuta
psqlen postgres 9.1:Puede obtener lo que se
psqlejecuta para un comando de barra diagonal inversa ejecutandopsqlcon el-Eindicador.fuente
ERROR: column p.proisagg does not existHay una función útil,
oidvectortypesque hace que esto sea mucho más fácil.Gracias a Leo Hsu y Regina Obe en Postgres Online por señalar
oidvectortypes. Escribí funciones similares antes, pero usé expresiones anidadas complejas que esta función elimina la necesidad de.Ver respuesta relacionada .
(editar en 2016)
Resumiendo las opciones de informe típicas:
AVISO : utilícelo
p.proname||'_'||p.oid AS specific_namepara obtener nombres únicos o para UNIRSE ainformation_schematablas; consulteroutinesyparametersen la respuesta de @ RuddZwolinski.La función del OID (ver
pg_catalog.pg_proc) y de la función nombre_específico (verinformation_schema.routines) son las principales opciones de referencia a funciones. A continuación, algunas funciones útiles en informes y otros contextos.fuente
pronamees el nombre, pero cómo obtener el OID para, por ejemplo. utilizar enpg_catalog.pg_get_function_result(oid))?oidcolumna depg_proc. Es una columna oculta.Ejecute debajo de la consulta SQL para crear una vista que muestre todas las funciones:
fuente
Es una buena idea nombrar las funciones con alias comun en las primeras palabras para filtrar el nombre con
LIKEEjemplo con esquema público en Postgresql 9.4, asegúrese de reemplazar con su esquemafuente
Ejemplo:
fuente
psqlinterfaz del cliente de Postgres. Esto solo funcionarápsqly técnicamente no es una consulta SQL.Obtener la lista de function_schema y function_name ...
fuente
Esta función devuelve todas las rutinas definidas por el usuario en la base de datos actual.
fuente