Det finns en praktisk funktion som hjälper dig: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);
visar alla funktioner med argument. Du kan anpassa det format
besvärjelse för att generera önskade uttalanden, och om du vill, LOOP
över den för att mata den genererade satsen till EXECUTE
i PL/PgSQL.
Tack till Leo Hsu och Regina Obe på Postgres Online
för att peka ut oidvectortypes
. Jag skrev liknande funktioner förut, men använde komplexa kapslade uttryck som den här funktionen gör sig av med behovet av.
Observera att i det här fallet behöver du inte göra någon anpassad SQL-generering alls , fastän. Använd bara GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA myschema TO ...
om du är på en vagt ny PostgreSQL.