как отобразить полный код хранимой процедуры? - PullRequest
96 голосов
/ 19 августа 2010

Как вы просматриваете хранимую процедуру / функцию?

Скажем, у меня есть старая функция без исходного определения - я хочу посмотреть, что она делает в pg / psql, но не могу понятьспособ сделать это.

с использованием Postgres версии 8.4.1

Ответы [ 8 ]

211 голосов
/ 20 августа 2010

\df+ <function_name> in psql .

124 голосов
/ 05 сентября 2012

\ef <function_name> в пскл. Это даст всю функцию с редактируемым текстом.

50 голосов
/ 22 ноября 2011
SELECT prosrc FROM pg_proc WHERE proname = 'function_name';

Это говорит обработчику функции, как вызвать функцию.Это может быть фактический исходный код функции для интерпретируемых языков, символ ссылки, имя файла или что-то еще, в зависимости от языка реализации / соглашения о вызовах

19 голосов
/ 19 августа 2010

используйте pgAdmin или pg_proc , чтобы получить источник хранимых процедур. pgAdmin делает то же самое.

12 голосов
/ 03 января 2013

Используйте \df для вывода списка всех хранимых процедур в Postgres.

7 голосов
/ 26 октября 2016

Если кому-то интересно, как быстро запросить таблицы каталога и использовать функцию pg_get_functiondef(), вот пример запроса:

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>'
0 голосов
/ 28 августа 2018

Вы также можете получить по phpPgAdmin, если вы настроили его в своей системе,

Шаг 1: выберите базу данных

Шаг 2: Нажмите на кнопку поиска

Шаг 3: Измените параметр поиска на функции, затем нажмите «Найти».

Вы получите список определенных функций. Вы также можете искать функции по названию, надеюсь, этот ответ поможет другим.

0 голосов
/ 19 августа 2010

Как правило, вы будете использовать приложение менеджера БД, например pgAdmin , перейдите к объекту, который вас интересует, и щелкните правой кнопкой мыши по пути «script as create» или подобному.

Вы пытаетесь сделать это ... без приложения для управления?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...