PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да намеря всички дефинирани от потребителя (не свързани с разширение) функции?

Както коментира @Craig, зависимостите се съхраняват в pg_catalog.pg_depend .

Заявката може да изглежда така (Postgres 11 или по-късно):

SELECT p.proname AS function_name
     , pg_get_function_identity_arguments(p.oid) AS parameter_list
     , pg_get_functiondef(p.oid) AS function_def  -- CREATE FUNCTION statement
FROM   pg_proc p
LEFT   JOIN pg_depend d ON d.objid = p.oid 
                       AND d.deptype = 'e'        -- would depend on extension
WHERE  p.pronamespace = 'public'::regnamespace    -- your schema(s) of interest
AND    d.objid IS NULL                            -- no such dependency
AND    p.prokind = 'f';                           -- only plain functions

Това изключва всички функции в зависимост от разширение от резултата. Ръководството относно типа зависимост deptype = 'e' :

И p.prokind = 'f' ограничава резултата до обикновени функции. Ръководството:

Това е ново в Postgres 11. За Postgres 10 или по-стара версия използвайте вместо това:

SELECT ...
...
AND    NOT proisagg     -- no aggregate functions
AND    NOT proiswindow  -- no window functions

Нямаше процедури , още.

Намерете pg_get_function_identity_arguments() и pg_get_functiondef() в ръководството тук . Свързани:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ГРУПИРАНЕ ПО или БРОЙ Подобни стойности на полето - UNPIVOT?

  2. Как да възстановим PostgreSQL дъмп файл в Postgres бази данни?

  3. wal_keep_segments защо минимум, а не максимум?

  4. Как мога да получа достъп до стойността по подразбиране на колона на Postgres с помощта на ActiveRecord?

  5. pg nodejs пакетът води до „невалиден входен синтаксис за тип json“