Er is een handige functie om je te helpen: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);
toont alle functies met argumenten. Je kunt dat format
aanpassen bezwering om alle gewenste uitspraken te genereren, en als je wilt, LOOP
eroverheen om de gegenereerde instructie in te voeren in EXECUTE
in PL/PgSQL.
Met dank aan Leo Hsu en Regina Obe bij Postgres Online
voor het aanwijzen van oidvectortypes
. Ik heb eerder soortgelijke functies geschreven, maar gebruikte complexe geneste expressies waardoor deze functie de noodzaak wegneemt.
Merk op dat in dit geval u helemaal geen aangepaste SQL-generatie hoeft uit te voeren , hoewel. Gebruik gewoon GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA myschema TO ...
als je een vaag recente PostgreSQL gebruikt.