Ada fungsi praktis untuk membantu Anda:oidvectortypes
.
SELECT format('%I.%I(%s)', ns.nspname, p.proname, oidvectortypes(p.proargtypes))
FROM pg_proc p INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid);
menunjukkan semua fungsi dengan argumen. Anda dapat menyesuaikan format
itu mantra untuk menghasilkan pernyataan yang diinginkan, dan jika Anda suka, LOOP
di atasnya untuk memasukkan pernyataan yang dihasilkan ke dalam EXECUTE
di PL/PgSQL.
Kredit untuk Leo Hsu dan Regina Obe di Postgres Daring
untuk menunjukkan oidvectortypes
. Saya menulis fungsi serupa sebelumnya, tetapi menggunakan ekspresi bersarang kompleks yang tidak diperlukan oleh fungsi ini.
Perhatikan bahwa dalam hal ini Anda tidak perlu melakukan pembuatan SQL kustom sama sekali , meskipun. Cukup gunakan GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA myschema TO ...
jika Anda menggunakan PostgreSQL baru-baru ini.