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

时间:2011-03-31 15:46:18

标签: postgresql pgadmin

我希望能够选择函数的代码。 当我尝试这个查询时:

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。

感谢。

3 个答案:

答案 0 :(得分:2)

我在PostgreSQL 9.0.3上使用pgAdmin III也遇到了这个问题。在我看来,这与字符串太长,pgAdmin III无法正常显示有关。如果你在命令提示符下执行它,那么你应该没问题。许多数据库管理工具都会遇到字符串截断问题。

有趣的是,如果您在pgAdmin III中选择prosrc单元并使用键盘进行复制,则可以粘贴输出。这可能是某种奇怪的显示错误。

答案 1 :(得分: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 :(得分:0)

档案>选项>查询工具>查询编辑器>最大。每列字符

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