postgres函数丢失列名

时间:2015-01-14 16:29:38

标签: postgresql pgadmin

我在PgAdmin查询工具中创建了一个函数,该函数返回一个包含单列的表:

create or replace function test_function()
  returns table(a integer) as
...

当我运行查询时,我收到一条成功消息,可以看到添加到列表中的函数,但定义存储为:

create or replace function test_function()
  returns setof integer as
...

这似乎只发生在单列返回上。它引起了我的问题,因为如果我想创建一个如下语句:

select t.a from test_function();

我不能,列名采用奇怪的名称,我收到一条错误消息,表明返回类型没有列a。我怎么强迫它返回一张桌子呢?

1 个答案:

答案 0 :(得分:1)

这是pgAdmin中的错误(报告here)。

首次创建时,函数定义会正确存储。 pgAdmin显示不正确,但对该函数的调用仍应按预期运行。

只有在您使用pgAdmin的CREATE OR REPLACE语句并运行它时才会出现此问题。重新创建似乎成功,但由于缺少变量声明,该函数将在运行时失败。

只要你记得每次重新创建函数时都修复返回类型,就不应该有问题。