Quero poder conectar-me a um banco de dados PostgreSQL e encontrar todas as funções de um esquema específico.
Meu pensamento era que eu poderia fazer alguma consulta para pg_catalog ou information_schema e obter uma lista de todas as funções, mas não consigo descobrir onde os nomes e parâmetros estão armazenados. Estou procurando uma consulta que me forneça o nome da função e os tipos de parâmetros necessários (e em que ordem eles são recebidos).
Existe uma maneira de fazer isso?
postgresql
function
Rudd Zwolinski
fonte
fonte
Após algumas pesquisas, consegui encontrar a
information_schema.routines
mesa e asinformation_schema.parameters
mesas. Usando esses, pode-se construir uma consulta para esse fim. LEFT JOIN, em vez de JOIN, é necessário para recuperar funções sem parâmetros.fonte
oidvectortypes
realmente útil também. Veja a nova resposta: stackoverflow.com/a/24034604/398670Se alguém estiver interessado aqui, qual é a consulta executada
psql
no postgres 9.1:Você pode obter o que
psql
é executado para um comando de barra invertida executandopsql
com o-E
sinalizadorfonte
ERROR: column p.proisagg does not exist
Há uma função útil
oidvectortypes
, que facilita muito isso.Agradecemos a Leo Hsu e Regina Obe, do Postgres Online, por apontarem
oidvectortypes
. Eu escrevi funções semelhantes antes, mas usei expressões aninhadas complexas das quais essa função se livra da necessidade.Veja a resposta relacionada .
(editar em 2016)
Resumindo opções de relatório típicas:
AVISO : use
p.proname||'_'||p.oid AS specific_name
para obter nomes exclusivos ou para se juntar ainformation_schema
tabelas - consulteroutines
eparameters
na resposta de @ RuddZwolinski.OID da função (consulte
pg_catalog.pg_proc
) e nome específico da função (consulteinformation_schema.routines
) são as principais opções de referência para funções. Abaixo, algumas funções úteis nos relatórios e em outros contextos.fonte
proname
é o nome, mas como obter o OID, por exemplo. usar empg_catalog.pg_get_function_result(oid))
?oid
coluna depg_proc
. É uma coluna oculta.Execute a consulta SQL abaixo para criar uma exibição que mostrará todas as funções:
fonte
É uma boa idéia nomear as funções com alias commun nas primeiras palavras para filtrar o nome com
LIKE
Exemplo com esquema público no Postgresql 9.4, certifique-se de substituir por seu esquemafonte
Exemplo:
fonte
psql
interface do cliente do Postgres. Isso funcionará apenaspsql
e não é tecnicamente uma consulta SQL.Obter Lista de function_schema e function_name ...
fonte
Esta função retorna todas as rotinas definidas pelo usuário no banco de dados atual.
fonte