Respostas:
use pgAdmin ou use pg_proc para obter a origem de seus procedimentos armazenados. pgAdmin faz o mesmo.
\df+ <function_name>
no psql .
\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.
;
<enter>
depois para executar o buffer.
ERROR: more than one function named
SELECT prosrc FROM pg_proc WHERE proname = 'function_name';
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
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 propriedade proargtypes
, mas precisará unir-se a alguma outra tabela para obter isso como nomes.
Use \df
para listar todos os procedimentos armazenados no Postgres.
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:
SELECT n.nspname AS schema
,proname AS fname
,proargnames AS args
,t.typname AS return_type
,d.description
,pg_get_functiondef(p.oid) as definition
-- ,CASE WHEN NOT p.proisagg THEN pg_get_functiondef(p.oid)
-- ELSE 'pg_get_functiondef() can''t be used with aggregate functions'
-- END as definition
FROM pg_proc p
JOIN pg_type t
ON p.prorettype = t.oid
LEFT OUTER
JOIN pg_description d
ON p.oid = d.objoid
LEFT OUTER
JOIN pg_namespace n
ON n.oid = p.pronamespace
WHERE NOT p.proisagg
AND n.nspname~'<$SCHEMA_NAME_PATTERN>'
AND proname~'<$FUNCTION_NAME_PATTERN>'
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.
Para ver o código completo (consulta) escrito em procedimentos / funções armazenados, use o comando abaixo:
sp_helptext procedure/function_name
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:
sp_helptext ProcedureName
use o comando abaixo para ver o código completo escrito para a função:
sp_helptext FunctionName
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?