PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana menemukan semua fungsi yang ditentukan pengguna (tidak terkait ekstensi)?

Seperti yang dikomentari oleh @Craig, dependensi disimpan di pg_catalog.pg_depend .

Kueri dapat terlihat seperti ini (Postgres 11 atau lebih baru):

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

Ini mengecualikan semua fungsi tergantung pada ekstensi dari hasil. Manual tentang jenis ketergantungan deptype = 'e' :

Dan p.prokind = 'f' membatasi hasil ke fungsi biasa. Manual:

Itu baru di Postgres 11. Untuk Postgres 10 atau lebih lama gunakan sebagai gantinya:

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

Tidak ada prosedur , belum.

Temukan pg_get_function_identity_arguments() dan pg_get_functiondef() dalam manual di sini . Terkait:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgresql - apakah ada cara untuk menonaktifkan tampilan pernyataan INSERT saat membaca dari file?

  2. Python psycopg2 cursor.fetchall() mengembalikan daftar kosong tetapi cursor.rowcount> 1

  3. Partisi tabel PostgreSQL+:max() dan min() tidak efisien

  4. Meminta 'menjalankan' kolom berturut-turut di Postgres

  5. Bagaimana cara memasukkan PostGIS GEOMETRY Point di Sequelize ORM?