PostgreSQL - 如何在pgAdmin中查看函数文本/源代码?

8

我希望能够选择一个函数的代码。 当我尝试使用以下查询时:

select prosrc from pg_proc where proname = 'my_proc'

我得到了一个空列。

问题是,似乎列prosrc确实包含函数文本。 当我尝试这个查询:

select proname from pg_proc where prosrc ~* 'part of Function text'

我得到了正确的函数数量和名称。 只是没有显示prosrc。 有任何想法吗?
PostgreSQL 8.2。 pgAdmin III 1.12.2。
谢谢。
4个回答

2

这是因为prosrc的值通常以换行符开始。通常在创建函数时,在引用函数文本的$$(或$whatever$)之后会换一行:

CREATE FUNCTION myfunction() RETURNS integer AS $$
    SELECT 1
$$ LANGUAGE sql;

如果您将其定义为:
CREATE FUNCTION myfunction() RETURNS integer AS $$SELECT 1$$ LANGUAGE sql;

该函数文本中不会有换行符。

您可以使用ltrim函数删除前导换行符:

SELECT ltrim(prosrc, E'\x0a') FROM pg_proc WHERE proname = 'myfunction';

另外,如果您在PGAdmin中垂直调整行的大小,您就可以看到完整的值。


2
我也在使用 PostgreSQL 9.0.3 上的 pgAdmin III 时遇到了这个问题。看起来是由于字符串太长而导致 pgAdmin III 无法正确显示。如果您在命令提示符上执行它,那么应该没问题。许多数据库管理工具都会遇到字符串截断问题。
有趣的是,如果在 pgAdmin III 中选择 prosrc 单元格并使用键盘复制它,您可以粘贴输出。这可能是某种奇怪的显示错误。

确实像魔法一样好用!而且很好知道这不是数据库发布问题。谢谢,伙计。 - bentaly
这是因为你所看到的只是函数文本开头的换行符。将单元格垂直拉大,你就能看到剩下的部分了。这并不是一个错误。 - hbn
1
我会称之为用户体验问题。 - anon

2
在较新的版本中,您可以通过右键单击并选择 脚本 -> 创建脚本 来实现。

Create Script


1
如果有人需要帮助的话 - 如果您没有看到“脚本”菜单,或者只看到“选择脚本”而不是“创建脚本”,那么可能是因为您连接的用户权限不足。 - Thomas

0

文件 > 选项 > 查询工具 > 查询编辑器 > 每列最大字符数

或者在对象浏览器中查看。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接