Как печатать функции и запускает исходный код в 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.
