RETURN NEXT语句

语法:

return_next ::=

参数:

var_name 变量名,只能是行变量或记录变量。

说明:

当函数声明返回集合类型(SETOF)时,可以通过多次执行RETURN NEXT 组成返回集合。函数体最后还是需要有RETURN语句,标志函数/过程执行结束。

在函数返回前,结果集将保存在内存中。因此如果结果集很大,势必引起硬盘交换,造成性能的降低,此时推荐使用游标方式访问结果集。

示例:RETURN NEXT语句

--  清理环境
drop function getstudentofgrade(int);
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(sgrade int) 
    return setof record as
declare
    rec student%rowtype;
begin
    for rec in select * from student where grade=sgrade order by id loop
        return next rec;
    end loop;
    return;
end;

/

select * from getstudentofgrade(2) 
    as (id int, name varchar(32), grade int); 
ID(int)      |NAME(varchar)      |GRADE(int)      |
------------------------------------------------
1            |davis              |2               |
------------------------------------------------
3            |mary               |2               |
总数目:2

--删除表
drop function getstudentofgrade(int);
drop table student CASCADE;