我有一个需要从多个表返回结果的函数。这可以在 Postgresql 中这样做吗(现在是 9.1,计划很快迁移到 9.2)?如果是这样,如何。
例如
create or replace function f1()
returns ???
as $body$ begin
return query select x.*
from users x;
return query select x.*
from user_preferences x join users y using(user_id) ; -- more where clauses
return query select x.*
from user_permissions x join users y using(user_id) ; -- more clauses
end; $body$ language 'plpgsql';
我考虑的替代方案是:(a)对用户和 user_preferences (等)进行笛卡尔积,但这将导致巨大的结果表和真正复杂的代码。(b) 首先对用户进行选择,然后迭代用户列表并根据他们的属性进行额外的迭代,但这会导致太多的数据库调用。而且,我为什么要编写 SQL 如此出色的代码呢?
是否有从 pg 函数中获取多个结果集的简洁方法?我已经搜索了 postgresql 文档,但找不到任何指导。
非常感谢。