游标

--提取每个班级的信息,包括班级里的学生的信息
declare
--保存班级信息的游标
--定义一个游标,将tb_clazz所有数据提取出来存到c_tb_clazz中
cursor c_tb_clazz is select * from tb_clazz ; --保存学生信息的游标 cursor c_tb_student(v_clazz_id number) is select * from tb_student where clazz_id = v_clazz_id; --表示该类型为行数据类型 r_tb_clazz tb_clazz %rowtype; r_tb_student tb_student %rowtype; begin --打开游标 open c_tb_clazz; --循环 loop --提取数据到行 fetch c_tb_clazz into r_tb_clazz; --到什么时候结束 exit when c_tb_clazz%notfound; --打印 dbmp_output.put_line('id:' || r_tb_clazz.id); dbmp_output.put_line('code:' || r_tb_clazz.code); --*********内循环学生信息*********************** open c_tb_student(r_tb_clazz.id); loop fetch c_tb_student into r_tb_student; exit when c_tb_student%notfound; dbmp_output.put_line('name:' || r_tb_student.name); loop end; close c_tb_student; --******************************** --循环结束 loop end; --关闭游标 close c_tb_clazz; end;

游标其实就是内存区的引用,游标就是拿来暂存取出的多行结果。

通常我们说的就是显示游标

%rowtype表示该类型为行数据类型,存储的是一行数据,一行数据里可以有多列,类似于表里的一行数据,也可以是游标里的一行数据,如:

  vs_row1  表%rowtype;

  vs_row2  游标%rowtype;

posted @ 2016-01-20 16:32  夏末、初秋  阅读(188)  评论(0编辑  收藏  举报