PostgreSQL - How to see Function Text/Source in pgAdmin?
我希望能够选择功能代码。
当我尝试此查询时:
1 | SELECT prosrc FROM pg_proc WHERE proname = 'my_proc' |
我得到一个空列。
问题是,似乎prosrc列确实包含函数文本。
当我尝试此查询时:
1 | SELECT proname FROM pg_proc WHERE prosrc ~* 'part of Function text' |
我获得了正确的函数编号和名称。
它只是不显示prosrc。
有什么主意吗?
PostgreSQL 8.2。
pgAdmin III 1.12.2。
谢谢。
这是因为
1 2 3 | CREATE FUNCTION myfunction() RETURNS INTEGER AS $$ SELECT 1 $$ LANGUAGE SQL; |
如果您将其定义为:
1 | CREATE FUNCTION myfunction() RETURNS INTEGER AS $$SELECT 1$$ LANGUAGE SQL; |
函数文本中没有换行符。
您可以使用ltrim函数来截断换行符:
1 | SELECT ltrim(prosrc, E'\\x0a') FROM pg_proc WHERE proname = 'myfunction'; |
或者,如果您在PGAdmin中垂直调整行的大小,则可以看到完整的值。
我也在PostgreSQL 9.0.3上使用pgAdmin III遇到了这个问题。在我看来,这与pgAdmin III无法正确显示的字符串太长有关。如果在命令提示符下执行它,那么应该没问题。许多数据库管理工具都会遇到字符串截断问题。
有趣的是,如果您在pgAdmin III中选择prosrc单元并用键盘将其复制,则可以粘贴输出。这可能是某种奇怪的显示错误。
文件>选项>查询工具>查询编辑器>最大值每列字符数
或者只是在对象浏览器中查看它。