PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm cách nào để tìm tất cả các hàm do người dùng xác định (không liên quan đến tiện ích mở rộng)?

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' :

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()pg_get_functiondef() trong hướng dẫn tại đây . Có liên quan:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi logic tính năng INSERT của PHP / MySQL

  2. Cách sử dụng các phép nối bên trong với các truy vấn con trong Laravel Eloquent

  3. Nhập dữ liệu CSV vào ứng dụng Rails, sử dụng thứ gì đó khác sau đó là id liên kết

  4. Có bất kỳ hàm băm nào trong PostgreSQL không?

  5. Cài đặt chính xác của pool kết nối cơ sở dữ liệu database.yml cho các ứng dụng Rails đơn luồng