Ответы:
используйте pgAdmin или используйте pg_proc, чтобы получить источник ваших хранимых процедур. pgAdmin делает то же самое.
\df+ <function_name>
в psql .
\x
мета-команду psql перед отображением определения функции. \x
также полезен для просмотра результатов запроса, содержащих записи с длинными строками.
\ef <function_name>
в psql. Это даст всю функцию с редактируемым текстом.
;
<enter>
после, чтобы выполнить буфер.
ERROR: more than one function named
SELECT prosrc FROM pg_proc WHERE proname = 'function_name';
Это сообщает обработчику функции, как вызывать функцию. Это может быть фактический исходный код функции для интерпретируемых языков, символ ссылки, имя файла или что-то еще, в зависимости от языка реализации / соглашения о вызовах.
psql
. Обратите внимание, что имена функций отображаются в нижнем регистре.
SELECT proname, prosrc, proargnames FROM pg_proc WHERE proname like '%func_name%'
. Это по крайней мере на Pg 9.6. Вы можете получить числовой код типа через свойство proargtypes
, но вам нужно будет присоединиться к какой-либо другой таблице, чтобы получить это как имена.
Используйте \df
для вывода списка всех хранимых процедур в Postgres.
Если кому-то интересно, как быстро запросить таблицы каталога и использовать эту 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>'
pg_get_functiondef(p.oid) ilike '%indicator_loss%'
Вы также можете получить с помощью phpPgAdmin, если вы настроили его в своей системе,
Шаг 1. Выберите свою базу данных
Шаг 2: нажмите кнопку поиска
Шаг 3: Измените параметр поиска на функции, затем нажмите «Найти».
Вы получите список определенных функций. Вы также можете искать функции по имени, надеюсь, этот ответ поможет другим.
Чтобы увидеть полный код (запрос), написанный в хранимой процедуре / функциях, используйте команду ниже:
sp_helptext procedure/function_name
для имени функции и имени процедуры не добавляйте префикс «dbo». или sys.
не добавляйте скобки в конце имени процедуры или функции, а также не передавайте параметры.
используйте ключевое слово sp_helptext, а затем просто передайте имя процедуры / функции.
используйте команду ниже, чтобы увидеть полный код, написанный для процедуры:
sp_helptext ProcedureName
используйте команду ниже, чтобы увидеть полный код, написанный для функции:
sp_helptext FunctionName
sp_helptext
в postgresql.
Обычно вы используете приложение-менеджер БД, такое как pgAdmin , переходите к интересующему вас объекту и щелкаете правой кнопкой мыши, чтобы выбрать «сценарий как создать» или аналогичный.
Вы пытаетесь сделать это ... без приложения для управления?