Existuje užitečná funkce, která vám pomůže: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);
zobrazuje všechny funkce s argumenty. Tento format
můžete upravit zaklínání pro generování libovolných příkazů, a pokud chcete, LOOP
přes něj, aby se vygenerovaný příkaz vložil do EXECUTE
v PL/PgSQL.
Poděkování Leo Hsu a Regina Obe na Postgres Online
za upozornění na oidvectortypes
. Napsal jsem podobné funkce dříve, ale použil jsem složité vnořené výrazy, které tato funkce nepotřebuje.
Všimněte si, že v tomto případě nemusíte vůbec provádět žádné vlastní generování SQL , ačkoli. Stačí použít GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA myschema TO ...
pokud používáte nejasně aktuální PostgreSQL.