Como você visualiza um procedimento / função armazenado?
Digamos que eu tenha uma função antiga sem a definição original - quero ver o que ela está fazendo no pg / psql, mas não consigo descobrir uma maneira de fazer isso.
usando Postgres versão 8.4.1
postgresql
stored-procedures
Darren
fonte
fonte
\df+ <function_name>
no psql .fonte
\x
meta-comando psql antes de exibir a definição da função.\x
também é útil para visualizar resultados de consultas contendo registros com strings longas.\ef <function_name>
no psql. Ele dará toda a função com texto editável.fonte
;
<enter>
depois para executar o buffer.ERROR: more than one function named
Isso informa ao manipulador da função como invocar a função. Pode ser o código-fonte real da função para linguagens interpretadas, um símbolo de link, um nome de arquivo ou qualquer outra coisa, dependendo da linguagem de implementação / convenção de chamada
fonte
psql
. Observe que os nomes das funções parecem estar reduzidos.SELECT proname, prosrc, proargnames FROM pg_proc WHERE proname like '%func_name%'
. Isso pelo menos na página 9.6. Você pode obter o código numérico do tipo por meio da propriedadeproargtypes
, mas precisará unir-se a alguma outra tabela para obter isso como nomes.Use
\df
para listar todos os procedimentos armazenados no Postgres.fonte
Se alguém se pergunta como consultar tabelas de catálogo rapidamente e usar a
pg_get_functiondef()
função, aqui está o exemplo de consulta:fonte
pg_get_functiondef(p.oid) ilike '%indicator_loss%'
Você também pode obter pelo phpPgAdmin se estiver configurado em seu sistema,
Etapa 1: Selecione seu banco de dados
Etapa 2: Clique no botão Localizar
Etapa 3: Mude a opção de pesquisa para funções e clique em Encontrar.
Você obterá a lista de funções definidas. Você também pode pesquisar funções por nome, espero que esta resposta ajude outras pessoas.
fonte
Para ver o código completo (consulta) escrito em procedimentos / funções armazenados, use o comando abaixo:
para o nome da função e o nome do procedimento, não adicione o prefixo 'dbo'. ou 'sys.'.
não adicione colchetes no final do procedimento ou nome da função e também não passe os parâmetros.
use a palavra-chave sp_helptext e depois apenas passe o nome do procedimento / função.
use o comando abaixo para ver o código completo escrito para o procedimento:
use o comando abaixo para ver o código completo escrito para a função:
fonte
sp_helptext
no postgresql.Normalmente falando, você usaria um aplicativo gerenciador de banco de dados como o pgAdmin , navegue até o objeto no qual está interessado e clique com o botão direito para "criar um script" ou semelhante.
Você está tentando fazer isso ... sem um aplicativo de gerenciamento?
fonte