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

Как да проверя коя функция използва тип?

Можете да намерите всички зависимости в системния каталог pg_depend .

Това връща всички функции в зависимост от типа . т.е. не само тези с типа в RETURNS клауза, но също и тези с типа като функционален параметър:

SELECT objid::regproc                            AS function_name
     , pg_get_functiondef(objid)                 AS function_definition
     , pg_get_function_identity_arguments(objid) AS function_args
     , pg_get_function_result(objid)             AS function_returns
FROM   pg_depend
WHERE  refclassid = 'pg_type'::regclass
AND    refobjid   = 'my_type'::regtype    -- insert your type name here
AND    classid    = 'pg_proc'::regclass;  -- only find functions

Това работи и за таблични функции:

...
RETURNS TABLE (foo my_type, bar int)

Използване на функции за системна каталожна информация .

Може да има други зависимости (не към функции). Премахнете последния WHERE условие от моята заявка за тестване (и адаптиране на SELECT списък, очевидно).

И все още има възможност типът да бъде използван изрично (в преобразуване например) в заявки в тялото на функцията или в динамичен SQL. Можете да идентифицирате такива случаи на употреба само чрез анализиране на текста на тялото на функцията. Няма изрично регистрирани зависимости в системата.

Свързани:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Възможно ли е да се направи рекурсивна SQL заявка?

  2. Homebrew postgres е счупен

  3. Основно наблюдение на PostgreSQL – част 1

  4. Данните в solr поддържат ли се от postgres в ckan

  5. грешка от python 2.7 до python 3.4 неподдържани типове операнд(и) за %:'байтове' и 'dict'