postgres的record类型只是一个虚拟的东西,它并没有实际的存储空间,因此结果集合的返回一定要依靠一种实在的表的结构,你或者在定义
函数时候返回一个表或者视图或者象下面的例子一样在调用函数的时候
后面跟着一个表的结构。
说明:表和视图创建成功以后在postgres的类型系统表中会自动增加
以他们的名字命名的类型),也就是说某个表和某个视图其实也是一
种数据类型。
create table mm(a int, b int);
insert into mm values(1,1);
insert into mm values(2,2);
insert into mm values(3,3);
create or replace function mmm() returns setof record as
'
declare
rec record;
begin
FOR rec IN SELECT * FROM mm LOOP
RETURN NEXT rec;
END LOOP;
return NULL;
end;'language 'oplsql';
select a.a,a.b from mmm() a(a int, b int);
a | b
---+---
1 | 1
2 | 2
3 | 3