Jest przydatna funkcja, która może ci pomóc: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);
pokazuje wszystkie funkcje z argumentami. Możesz dostosować ten format
inkantacja do generowania dowolnych instrukcji, a jeśli chcesz, LOOP
nad nim, aby przekazać wygenerowaną instrukcję do EXECUTE
w PL/PgSQL.
Kredyt dla Leo Hsu i Reginy Obe w Postgres Online
za wskazanie oidvectortypes
. Pisałem już podobne funkcje, ale używałem złożonych wyrażeń zagnieżdżonych, których ta funkcja eliminuje potrzebę.
Zauważ, że w tym przypadku nie musisz w ogóle tworzyć niestandardowego kodu SQL , chociaż. Wystarczy użyć GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA myschema TO ...
jeśli korzystasz z nieco nowego PostgreSQL.