Theo nhận xét của @Craig, các phần phụ thuộc được lưu trữ trong pg_catalog.pg_depend
.
Truy vấn có thể trông như thế này ( Postgres 11 trở lên):
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
Điều này loại trừ tất cả các chức năng phụ thuộc vào phần mở rộng từ kết quả. Hướng dẫn sử dụng
về loại phụ thuộc deptype = 'e'
:
Và p.prokind = 'f'
giới hạn kết quả cho các hàm đơn giản. Hướng dẫn:
Tính năng mới trong Postgres 11. Dành cho Postgres 10 trở lên sử dụng thay thế:
SELECT ...
...
AND NOT proisagg -- no aggregate functions
AND NOT proiswindow -- no window functions
Không có thủ tục , chưa.
Tìm pg_get_function_identity_arguments()
và pg_get_functiondef()
trong hướng dẫn tại đây
. Có liên quan: