postgres 函数丢失列名
postgres functions loses column names
我在 PgAdmin 查询工具中创建了一个函数,return是一个 table 具有单列的函数:
create or replace function test_function()
returns table(a integer) as
...
当我 运行 查询时,我收到一条成功消息并且可以看到添加到列表中的函数,但定义存储为:
create or replace function test_function()
returns setof integer as
...
这似乎只发生在单列 return 上。这给我带来了问题,因为如果我想创建一个像这样的语句:
select t.a from test_function();
我不能,列名采用奇怪的名称,我收到一条错误消息,指出 return 类型没有 a 列。我怎样才能强制这个 return a table?
这是 pgAdmin 中的错误(已报告 here)。
函数定义在您首次创建时已正确存储。 pgAdmin 显示不正确,但对该函数的调用仍应按预期运行。
只有当您使用 pgAdmin 的 CREATE OR REPLACE
语句并 运行 时才会出现问题。重新创建似乎成功,但由于缺少变量声明,函数将在 运行 时失败。
只要记得在每次重新创建函数时修复 return 类型,就不会有问题。
我在 PgAdmin 查询工具中创建了一个函数,return是一个 table 具有单列的函数:
create or replace function test_function()
returns table(a integer) as
...
当我 运行 查询时,我收到一条成功消息并且可以看到添加到列表中的函数,但定义存储为:
create or replace function test_function()
returns setof integer as
...
这似乎只发生在单列 return 上。这给我带来了问题,因为如果我想创建一个像这样的语句:
select t.a from test_function();
我不能,列名采用奇怪的名称,我收到一条错误消息,指出 return 类型没有 a 列。我怎样才能强制这个 return a table?
这是 pgAdmin 中的错误(已报告 here)。
函数定义在您首次创建时已正确存储。 pgAdmin 显示不正确,但对该函数的调用仍应按预期运行。
只有当您使用 pgAdmin 的 CREATE OR REPLACE
语句并 运行 时才会出现问题。重新创建似乎成功,但由于缺少变量声明,函数将在 运行 时失败。
只要记得在每次重新创建函数时修复 return 类型,就不会有问题。