PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como obter a lista de funções no banco de dados no PostgreSQL junto com seus parâmetros?


Há uma função útil para ajudá-lo: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);

mostra todas as funções com argumentos. Você pode adaptar esse format encantamento para gerar quaisquer declarações desejadas e, se desejar, LOOP sobre ele para alimentar a instrução gerada em EXECUTE em PL/PgSQL.

Crédito para Leo Hsu e Regina Obe no Postgres On-line para apontar oidvectortypes . Eu escrevi funções semelhantes antes, mas usei expressões aninhadas complexas que essa função elimina a necessidade.

Observe que, neste caso, você não precisa fazer nenhuma geração de SQL personalizada , no entanto. Basta usar GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA myschema TO ... se você estiver em um PostgreSQL vagamente recente.