database - Postgresql 函数中的列命名

标签 database function postgresql

我想创建一个返回类似表格结果的 PSQL 函数。我的函数定义如下所示:

create or replace function myfunc1() 
   returns table(id varchar(50), title varchar(50)) 
as $$ 
begin 
   return query select id, title from books; 
end; 
$$ language plpgsql;

但是,当我调用该函数时,出现此错误:

ERROR: column reference "id" is ambiguous LINE 1: select id, title from books ^ DETAIL: It could refer to either a PL/pgSQL variable or a table column.

显然,这是因为我在返回表和目标表中都使用了列名“id”。最简单的解决方案是更改列名称。但我来这里是为了寻找一种方法,让我可以使用我想要的列名称。此外,更改名称会使我的代码变得奇怪,并且其他人难以理解。

最佳答案

通过限定列名消除歧义:

create or replace function myfunc1()
  returns table(id varchar(50), title varchar(50)) as
$$
  select books.id, books.title from books;
$$ language sql stable;

关于database - Postgresql 函数中的列命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6000194/

相关文章:

postgresql - Instragram 的 UUID 创建失败

java - 有什么工具或技术可以以编程方式验证数据库之间的约束吗?

c - 无法将 float 传递给另一个函数?

javascript - 在 JavaScript 中,我不明白下面代码的输出

Javascript:脚本在函数调用时终止

sql - 如何使用 CASE 来更改从数据库检索的数据

postgresql - 如何添加适用于多列的 Postgres 唯一约束,检查列是否彼此唯一?

database - 古老、未知的存储系统需要帮助

MySQL JOIN 与 MySQL 简写 JOIN(,)

sql - 使用内存数据库从多个数据库查询