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.