Oracle数据库中游标的使用
游标的定义:
-
-
-
-
-
---游标的使用 declare --定义一个游标,将tab_stu所有数据提取出来 cursor c_tab_stu is select * from tab_stu; r_tab_stu tab_stu%rowtype;--使用rowtype存储游标数据 begin --打开游标 open c_tab_stu; --提取数据 fetch c_tab_stu into r_tab_stu; dbms_output.put_line('stu_id:'||r_tab_stu.stu_id); dbms_output.put_line('stu_name:'||r_tab_stu.stu_name); dbms_output.put_line('stu_age:'||r_tab_stu.stu_age); --关闭游标 close c_tab_stu; end;
-
--使用循环提取所有记录 declare --定义一个游标,将tab_stu所有数据提取出来 cursor c_tab_stu is select * from tab_stu; r_tab_stu tab_stu%rowtype;--使用rowtype存储游标数据 begin --打开游标 open c_tab_stu; --提取数据 loop fetch c_tab_stu into r_tab_stu; --退出条件,也就是上面图片的属性的值 exit when c_tab_stu%notfound; dbms_output.put_line('stu_id:'||r_tab_stu.stu_id); dbms_output.put_line('stu_name:'||r_tab_stu.stu_name); dbms_output.put_line('stu_age:'||r_tab_stu.stu_age); end loop; --关闭游标 close c_tab_stu; end;
-
--含有条件的游标 --实现目标是,查询每个班的学生 declare --先要定义两个游标 --定义tab_class游标 cursor s_tab_class is select * from tab_class; --定义tab_stu游标,但是这里需要一个参数,就是班级的id cursor s_tab_stu(v_class_id number) is select * from tab_stu where class_id=v_class_id; --定义两个存储变量 --定义tab_class v_tab_class_rowtype tab_class%rowtype; --定义tab_stu v_tab_stu_rowtype tab_stu%rowtype; begin --打开游标 open s_tab_class; loop --提取数据 fetch s_tab_class into v_tab_class_rowtype; exit when s_tab_class%notfound; dbms_output.put_line('班级:'||v_tab_class_rowtype.class_name||'含有'); --嵌套循环,遍历当前班级的学生 open s_tab_stu(v_tab_class_rowtype.class_id); loop fetch s_tab_stu into v_tab_stu_rowtype; exit when s_tab_stu%notfound; dbms_output.put_line(v_tab_stu_rowtype.stu_name); end loop; close s_tab_stu; end loop; close s_tab_class; end;
-
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。