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.routines
mesa y lasinformation_schema.parameters
mesas. 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
oidvectortypes
realmente útil también. Ver nueva respuesta: stackoverflow.com/a/24034604/398670Si alguien está interesado aquí es qué consulta se ejecuta
psql
en postgres 9.1:Puede obtener lo que se
psql
ejecuta para un comando de barra diagonal inversa ejecutandopsql
con el-E
indicador.fuente
ERROR: column p.proisagg does not exist
Hay una función útil,
oidvectortypes
que 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_name
para obtener nombres únicos o para UNIRSE ainformation_schema
tablas; consulteroutines
yparameters
en 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
proname
es el nombre, pero cómo obtener el OID para, por ejemplo. utilizar enpg_catalog.pg_get_function_result(oid))
?oid
columna 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
LIKE
Ejemplo con esquema público en Postgresql 9.4, asegúrese de reemplazar con su esquemafuente
Ejemplo:
fuente
psql
interfaz del cliente de Postgres. Esto solo funcionarápsql
y 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