Подтвердить что ты не робот

Как отобразить полный код хранимой процедуры?

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

\df+ <function_name> в psql.

Ответ 3

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

Ответ 4

SELECT prosrc FROM pg_proc WHERE proname = 'function_name';

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

Ответ 5

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

Ответ 6

Если кто-то задается вопросом, как быстро запросить таблицы каталогов и использовать функцию 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
  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 n.nspname~'<$SCHEMA_NAME_PATTERN>'
   AND proname~'<$FUNCTION_NAME_PATTERN>'

Ответ 7

Обычно вы используете приложение менеджера баз данных, например pgAdmin, просматриваете интересующий вас объект и правильно щелкните свой путь до "script как создать" или аналогичный.

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