Es gibt eine praktische Funktion, die Ihnen dabei hilft: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);
zeigt alle Funktionen mit Argumenten. Sie können dieses format
anpassen Beschwörung, um beliebige Anweisungen zu generieren, und wenn Sie möchten, LOOP
darüber, um die generierte Anweisung in EXECUTE
einzuspeisen in PL/PgSQL.
Dank an Leo Hsu und Regina Obe bei Postgres Online
um auf oidvectortypes
hinzuweisen . Ich habe zuvor ähnliche Funktionen geschrieben, aber komplexe verschachtelte Ausdrücke verwendet, die diese Funktion überflüssig macht.
Beachten Sie, dass Sie in diesem Fall überhaupt keine benutzerdefinierte SQL-Generierung durchführen müssen , obwohl. Verwenden Sie einfach GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA myschema TO ...
wenn Sie ein vage aktuelles PostgreSQL verwenden.