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;