oracle数据库--游标

游标的定义

游标是用来操作数据库中的查询结果集。(相当于JDBC中的ResultSet)

游标的类型

静态游标

结果集已经确实(静态定义)的游标。在执行前,明确知道sql语句游标 ,分为隐式和显示游标。
显示游标
用户显示声明的游标,即指定结果集。当查询返回结果超过一行时,就需要一个显式游标。用户自己写的sql语句,编译时能明确知道sql语句。
隐式游标
所有DML语句(增、删、改、查询单条记录)为隐式游标,该变量名不需要用户自己声明,它由系统帮我们定义,叫sql。使用时不需要声明隐式游标,它由系统定义。
隐式游标的使用:通过%rowcour判断是有使用了。

动态游标 (REF游标)

在执行前不知道sql语句游标,执行时才知道sql语句的游标。 动态关联结果集的临时对象。
强类型游标
规定返回类型
弱类型游标
不规定返回类型,可以获取任何结果集

游标的使用

游标遍历方法

声明游标
打开游标
  open 游标名
从结果游标中取数据
  fetch 游标名 into 变量
  游标名%found : 找到数据
  游标名%notfound:没有找到数据
关闭游标
  close 游标名

游标举例

(1)查询成绩为90的所有学生信息;

declare
//声明游标,把要在控制台显示的数据赋值给游标
cursor cur is select * from t_student where score = 90;
//声明一个变量,用来存储游标的一行
s_row emp%rowtype;
begin //遍历游标
	open cur;//打开游标
	loop
		//提取游标中的内容, 提取一行记录:fetch 游标名 into 变量;
		fetch cur into s_row;
		exit when cur%notfound;
		dbms_output.put_line(s_row.sno || s_row.sname);
		//循环, 退出,exit when 游标名%notfound; 当游标中没有提取到记录时退出
	end loop;
close cur;//关闭游标
end;

(2)将成绩为90的学生 学分+10;

declare
cursor cur is select sno,sname from t_student where score = 90;
begin
	--注意:for循环特点,可以自动打开和关闭游标
	--i代表的是游标一行的内容
	for i in cur loop
		update t_student set sval = sval + 10 where sno = i.empno;
	end loop;
end;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值