Anda dapat menemukan semua dependensi dalam katalog sistem pg_depend
.
Ini mengembalikan semua fungsi tergantung pada jenisnya . Yaitu. tidak hanya mereka dengan tipe di RETURNS
klausa, tetapi juga yang memiliki tipe sebagai parameter fungsi:
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
Ini juga berfungsi untuk fungsi tabel:
...
RETURNS TABLE (foo my_type, bar int)
Menggunakan fungsi informasi katalog sistem .
Mungkin ada dependensi lain (bukan fungsi). Hapus WHERE
terakhir kondisi dari kueri saya untuk diuji (dan sesuaikan SELECT
daftar, tentu saja).
Dan masih ada kemungkinan jenis yang digunakan secara eksplisit (dalam gips misalnya) dalam kueri di badan fungsi atau di SQL dinamis. Anda hanya dapat mengidentifikasi kasus penggunaan tersebut dengan mengurai teks dari badan fungsi. Tidak ada dependensi eksplisit yang terdaftar dalam sistem.
Terkait:
- Cara mendapatkan daftar parameter fungsi (agar saya dapat menghapus fungsi)
- DROP FUNCTION tanpa mengetahui jumlah/jenis parameter?