Oracle基本操作十一:游标

--游标:实际上是把sql执行的结果保存在内存中,提供了访问执行结果的途径
--分类
   --隐式游标:每个DML语句和PL/SQL语句都有
   --显示游标:开发人员声明和控制
--举例一:单行提取tb_clazz表中的所有数据
declare
   --1.定义游标,提取tb_clazz中的所有数据
   cursor c_tb_clazz is
   select * from tb_clazz;
   r_tb_clazz tb_clazz%rowtype;
begin
   --2.打开游标
   open c_tb_clazz;
   --3.提取数据:fetch 会抓到当前的行,并使指针向下移
   fetch c_tb_clazz into r_tb_clazz;
   dbms_out.put_line(r_tb_clazz.id);--测试结果
   --4.关闭游标
   close c_tb_clazz;
end;
--举例二:循环提取tb_clazz表中的所有数据
declare
   --1.定义游标,提取tb_clazz中的所有数据
   cursor c_tb_clazz is
   select * from tb_clazz;
   r_tb_clazz tb_clazz%rowtype;
begin
   --2.打开游标
   open c_tb_clazz;
   --3.提取数据:fetch 会抓到当前的行,并使指针向下移
   loop
     fetch c_tb_clazz into r_tb_clazz;
exit when c_tb_clazz%notfound;--循环结束条件
     dbms_out.put_line(r_tb_clazz.id);--测试结果
   end loop;
   --4.关闭游标
   close c_tb_clazz;
end;


--带参数的游标
--举例三:提取每个班级信息,包括班级里面的学生信息
       --该例需要两游标
declare
   --1.定义游标,提取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_class_id;
   r_tb_clazz tb_clazz%rowtype;
   r_tb_student tb_student%rowtype;
begin
   --2.打开游标
   open c_tb_clazz;--使用班级游标
   --3.提取数据:fetch 会抓到当前的行,并使指针向下移
   loop
     fetch c_tb_clazz into r_tb_clazz;
exit when c_tb_clazz%notfound;--循环结束条件
     dbms_out.put_line(r_tb_clazz.id);--测试结果
--####内循环取学生信息####################
open c_tb_student(r_tb_clazz.id)--使用学生游标
loop
  fetch c_tb_student into r_tb_clazz;
  exit when c_tb_student%notfound;--循环结束条件
  --测试学生信息
end loop;
close c_tb_student;
--########################################
   end loop;
   --4.关闭游标
   close c_tb_clazz;
end;







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值