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;