PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie bekomme ich die Liste der Funktionen in der Datenbank in PostgreSQL zusammen mit ihren Parametern?

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.