我想创建一个函数来返回所有列,比如说在函数查询中加入的2个表。如果那只是一个表,我可以简单地使用表的名称来定义返回类型。对于更多的表,我知道的唯一方法就是分别定义每一列,当我在表中有很多列时会变得有点复杂。有没有办法做到这一点更简单?
答案 0 :(得分:1)
您可以创建一个视图并将其用作类型:
CREATE VIEW viewname AS select * from table1, table2, table3;
然后这个函数声明将起作用:
CREATE FUNCTION multiple_tables(...) RETURNS SETOF viewname AS
$$
return select * from table1 join table2 on (...) join table3 on (...) WHERE ...;
$$ language sql;
RETURNS viewname
没有SETOF
也是可能的。
该函数将取决于viewname
,因此在不先删除函数的情况下,以后不能对结构进行结构修改。
答案 1 :(得分:0)
没有专门的功能。
您可以列出RETURNS TABLE
子句中的所有列:
CREATE FUNCTION
...
RETURNS TABLE (col1 type1, col2 type2, ...)
...
或者您创建了TYPE
并使用RETURNS SETOF ..
CREATE TAPE mytype (col1 type1, col2 type2, ...);
...
RETURNS SETOF mytype
...