RETURN QUERY语句¶
语法:
return_query ::=
说明:
当函数声明返回类型应该是行或者记录的集合类型(SETOF),可以通过多次执行RETURN QUERY 或者把RETURN NEXT和RETURN QUERY混合使用组成返回集合。函数体最后还是需要有RETURN语句,标志函数/过程执行结束。
在函数返回前,结果集将保存在内存中。因此如果结果集很大,势必引起硬盘交换,造成性能的降低,此时推荐使用游标方式访问结果集。
示例:RETURN QUERY语句¶
-- 清理环境
drop function getstudentofgrade();
drop table student CASCADE;
--创建表
create table student
(
id int,
name varchar(32),
grade int
);
insert into student values(1, 'davis', 2);
insert into student values(2, 'ricky', 4);
insert into student values(3, 'mary', 2);
create or replace function getstudentofgrade()
return setof record as
begin
return query select * from student;
return;
end;
/
select * from getstudentofgrade()
as (id int, name varchar(32), grade int); --as 之后的语句可省略
ID(int) |NAME(varchar) |GRADE(int) |
------------------------------------------------
1 |davis |2 |
------------------------------------------------
2 |ricky |4 |
------------------------------------------------
3 |mary |2 |
总数目:3
--删除表
drop function getstudentofgrade();
drop table student CASCADE;