Postgres 函数,获取“查询没有结果数据的目的地”,不想使用表结果类型

Posted

技术标签:

【中文标题】Postgres 函数,获取“查询没有结果数据的目的地”,不想使用表结果类型【英文标题】:Postgres function, getting "query has no destination for result data", don't want to use table result type 【发布时间】:2015-12-01 09:40:21 【问题描述】:

我正在编写一个简单的 postgres 函数。这个函数的结果应该是“事件”表的一行。我有以下内容:

create or replace function featured_event() returns setof events as
$$
begin
select events.* from events where featured is true;
end
$$ LANGUAGE plpgsql; 

我不想对列进行硬编码,而是使用现有表中的结构作为返回类型。

不是与Function with SQL query has no destination for result data 重复,因为我不想使用table 结果类型。

【问题讨论】:

【参考方案1】:

使用SQL函数:

create or replace function featured_event() returns setof events as
$$
    select events.* from events where featured is true;
$$ LANGUAGE sql; 

在 plpgsql 中你应该使用return query:

create or replace function featured_event_plpgsql() returns setof events as
$$
begin
    return query select events.* from events where featured is true;
end;
$$ LANGUAGE plpgsql; 

【讨论】:

return query 是我所需要的。谢谢!

以上是关于Postgres 函数,获取“查询没有结果数据的目的地”,不想使用表结果类型的主要内容,如果未能解决你的问题,请参考以下文章

如何从 pg_catalog.pg_proc 获取 Postgres 函数名称以及函数特定名称?

无法使用 Postgres 存储函数获取 ID - int 类型的值错误

postgres 取整函数 trunc

如何在 jpa 查询中调用 postgres position() 函数

在 postgres plpgsql 函数中重用 json 解析的输入

在 Laravel 中使用诸如 JSON 函数之类的 Postgres 功能