Respuestas:
use pgAdmin o use pg_proc para obtener la fuente de sus procedimientos almacenados. pgAdmin hace lo mismo.
\df+ <function_name>
en psql .
\x
metacomando psql antes de mostrar la definición de la función. \x
también es útil para ver resultados de consultas que contienen registros con cadenas largas.
\ef <function_name>
en psql. Dará toda la función con texto editable.
;
<enter>
after para ejecutar el búfer.
ERROR: more than one function named
SELECT prosrc FROM pg_proc WHERE proname = 'function_name';
Esto le dice al controlador de la función cómo invocar la función. Puede ser el código fuente real de la función para los idiomas interpretados, un símbolo de enlace, un nombre de archivo o casi cualquier otra cosa, dependiendo del idioma de implementación / convención de llamada
psql
. Tenga en cuenta que los nombres de las funciones parecen estar reducidos.
SELECT proname, prosrc, proargnames FROM pg_proc WHERE proname like '%func_name%'
. Esto al menos en la página 9.6. Puede obtener el código numérico del tipo a través de la propiedad proargtypes
, pero necesitaría unirse con alguna otra tabla para obtener esto como nombres.
Úselo \df
para listar todos los procedimientos almacenados en Postgres.
Si alguien se pregunta cómo consultar rápidamente las tablas del catálogo y hacer uso de la pg_get_functiondef()
función, aquí está la consulta de muestra:
SELECT n.nspname AS schema
,proname AS fname
,proargnames AS args
,t.typname AS return_type
,d.description
,pg_get_functiondef(p.oid) as definition
-- ,CASE WHEN NOT p.proisagg THEN pg_get_functiondef(p.oid)
-- ELSE 'pg_get_functiondef() can''t be used with aggregate functions'
-- END as definition
FROM pg_proc p
JOIN pg_type t
ON p.prorettype = t.oid
LEFT OUTER
JOIN pg_description d
ON p.oid = d.objoid
LEFT OUTER
JOIN pg_namespace n
ON n.oid = p.pronamespace
WHERE NOT p.proisagg
AND n.nspname~'<$SCHEMA_NAME_PATTERN>'
AND proname~'<$FUNCTION_NAME_PATTERN>'
pg_get_functiondef(p.oid) ilike '%indicator_loss%'
También puede obtener phpPgAdmin si está configurado en su sistema,
Paso 1: seleccione su base de datos
Paso 2: haga clic en el botón Buscar
Paso 3: Cambie la opción de búsqueda a funciones y luego haga clic en Buscar.
Obtendrá la lista de funciones definidas. También puede buscar funciones por nombre, espero que esta respuesta ayude a otros.
Para ver el código completo (consulta) escrito en funciones / procedimientos almacenados, use el siguiente comando:
sp_helptext procedure/function_name
para el nombre de la función y el nombre del procedimiento, no agregue el prefijo 'dbo'. o 'sys.'.
no agregue corchetes al final del procedimiento o el nombre de la función y tampoco pase los parámetros.
use la palabra clave sp_helptext y luego simplemente pase el nombre del procedimiento / función.
use el siguiente comando para ver el código completo escrito para el procedimiento:
sp_helptext ProcedureName
use el siguiente comando para ver el código completo escrito para la función:
sp_helptext FunctionName
sp_helptext
en postgresql.
Normalmente, usaría una aplicación de administrador de base de datos como pgAdmin , busque el objeto que le interese y haga clic con el botón derecho en "script as create" o similar.
¿Estás intentando hacer esto ... sin una aplicación de gestión?