Как печатать функции и запускает исходный код в postgresql? сообщите мне, если кто-нибудь знает запрос для отображения функции, запускает исходный код.
Как отображать функцию, процедуру, запускает исходный код в postgresql?
Ответ 1
\df+
в psql дает исходный код.
Ответ 2
Для функции:
вы можете запросить представление pg_proc, как показано ниже:
select proname,prosrc from pg_proc where proname= your_function_name;
Другим способом является простое выполнение commont \df
и \ef
, которые могут перечислять функции.
skytf=> \df
List of functions
Schema | Name | Result data type | Argument data types | Type
--------+----------------------+------------------+------------------------------------------------+--------
public | pg_buffercache_pages | SETOF record | | normal
skytf=> \ef pg_buffercache_pages
Он покажет исходный код функции.
Для триггеров:
Я не знаю, есть ли прямой способ получить исходный код. Просто знайте следующий путь, может быть, это поможет вам!
- Шаг 1: Получите таблицу на кнопке триггера:
skytf=> select tgrelid from pg_trigger where tgname='insert_tbl_tmp_trigger'; tgrelid --------- 26599 (1 row)
- Шаг 2: получите имя таблицы вышеприведенного OID!
skytf=> select oid,relname from pg_class where oid=26599; oid | relname -------+----------------------------- 26599 | tbl_tmp (1 row)
- Шаг 3: укажите информацию о таблице.
skytf=> \d tbl_tmp
Он покажет вам детали триггера таблицы. Обычно триггер использует функцию. Таким образом, вы можете получить исходный код триггерной функции, как указано выше, что я указал!
Ответ 3
Вот несколько примеров из PostgreSQL-9.5
Отобразить список:
- Функции:
\df+
- Триггеры:
\dy+
Определение дисплея:
postgres=# \sf
function name is required
postgres=# \sf pg_reload_conf()
CREATE OR REPLACE FUNCTION pg_catalog.pg_reload_conf()
RETURNS boolean
LANGUAGE internal
STRICT
AS $function$pg_reload_conf$function$
postgres=# \sf pg_encoding_to_char
CREATE OR REPLACE FUNCTION pg_catalog.pg_encoding_to_char(integer)
RETURNS name
LANGUAGE internal
STABLE STRICT
AS $function$PG_encoding_to_char$function$
Ответ 4
Есть много возможностей. Самый простой способ - просто использовать pgAdmin и получить это из окна SQL. Однако, если вы хотите получить это программно, тогда изучите pg_proc
и pg_trigger
или routines
и triggers
представления из информационной схемы (стандартный SQL-метод, но он может не охватывать все функции, особенно специфичные для PostgreSQL). Например:
SELECT
routine_definition
FROM
information_schema.routines
WHERE
specific_schema LIKE 'public'
AND routine_name LIKE 'functionName';
Ответ 5
дополнительно к ответу @franc вы можете использовать это из интерфейса sql:
select
prosrc
from pg_trigger, pg_proc
where
pg_proc.oid=pg_trigger.tgfoid
and pg_trigger.tgname like '<name>'
(взято здесь: http://www.postgresql.org/message-id/[email protected]m)
Ответ 6
\sf
имя_функции в psql дает редактируемый исходный код для одной функции.
От https://www.postgresql.org/docs/9.6/static/app-psql.html:
\ sf [+] function_description Эта команда извлекает и показывает определение именованной функции в виде команды CREATE или REPLACE FUNCTION.
Если + добавлено к имени команды, то выходные строки нумеруются, причем первая строка тела функции является строкой 1.