Saya ingin dapat terhubung ke database PostgreSQL dan menemukan semua fungsi untuk skema tertentu.
Pikir saya adalah bahwa saya bisa membuat beberapa permintaan ke pg_catalog atau information_schema dan mendapatkan daftar semua fungsi, tapi saya tidak tahu di mana nama dan parameter disimpan. Saya mencari kueri yang akan memberi saya nama fungsi dan tipe parameter yang diperlukan (dan urutan apa yang diperlukan).
Apakah ada cara untuk melakukan ini?
postgresql
function
Rudd Zwolinski
sumber
sumber
Setelah beberapa pencarian, saya dapat menemukan
information_schema.routines
tabel daninformation_schema.parameters
tabel. Dengan menggunakan itu, orang dapat membuat kueri untuk tujuan ini. LEFT JOIN, alih-alih BERGABUNG, diperlukan untuk mengambil fungsi tanpa parameter.sumber
oidvectortypes
sangat berguna juga. Lihat jawaban baru: stackoverflow.com/a/24034604/398670Jika ada yang tertarik di sini adalah query apa yang dijalankan oleh
psql
pada postgres 9.1:Anda bisa mendapatkan apa yang
psql
dijalankan untuk perintah backslash dengan menjalankanpsql
dengan-E
flag.sumber
ERROR: column p.proisagg does not exist
Ada fungsi praktis
oidvectortypes
, yang membuat ini jauh lebih mudah.Penghargaan untuk Leo Hsu dan Regina Obe di Postgres Online untuk menunjukkan
oidvectortypes
. Saya menulis fungsi yang sama sebelumnya, tetapi menggunakan ekspresi bersarang kompleks yang fungsi ini menghilangkan kebutuhan.Lihat jawaban terkait .
(sunting pada 2016)
Meringkas opsi laporan yang khas:
PEMBERITAHUAN : gunakan
p.proname||'_'||p.oid AS specific_name
untuk mendapatkan nama unik, atau BERGABUNG denganinformation_schema
tabel - lihatroutines
danparameters
pada jawaban @ RuddZwolinski.OID fungsi (lihat
pg_catalog.pg_proc
) dan nama_ fungsi spesifik (lihatinformation_schema.routines
) adalah opsi referensi utama untuk fungsi. Di bawah ini, beberapa fungsi yang berguna dalam pelaporan dan konteks lainnya.sumber
proname
adalah nama, tetapi bagaimana mendapatkan OID untuk, mis. gunakan dipg_catalog.pg_get_function_result(oid))
?oid
Kolompg_proc
. Itu kolom tersembunyi.Jalankan di bawah query SQL untuk membuat tampilan yang akan menampilkan semua fungsi:
sumber
Adalah ide yang baik bernama fungsi dengan alias komun pada kata-kata pertama untuk filtre nama dengan
LIKE
Contoh dengan skema publik di Postgresql 9.4, pastikan untuk mengganti dengan rencananyasumber
Contoh:
sumber
psql
antarmuka klien Postgres. Ini hanya akan berfungsipsql
dan secara teknis bukan query SQL.Dapatkan Daftar function_schema dan function_name ...
sumber
Fungsi ini mengembalikan semua rutin yang ditentukan pengguna dalam database saat ini.
sumber