栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Oracle-游标

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Oracle-游标

万般皆下品、惟有读书高
文章持续更新,可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】获取福利,回复【项目】获取项目源码,回复【简历模板】获取简历模板,回复【学习路线图】获取学习路线图。

文章目录
  • 一、游标的定义和类型
    • 1、游标的基本概念
    • 2、游标的基本类型
    • 3、静态游标属性
  • 二、游标的创建及使用
    • 1、显示游标的创建与使用
      • 1:声明游标
      • 2:打开游标
      • 3:读取游标
      • 4:关闭游标
      • 5:使用游标查询student表中所有年龄大于20的学生基本信息。
    • 2、隐式游标的创建与使用
      • 1、将student表中张三的学生年龄增加10岁,然后使用隐式游标的%rowcount属性输出涉及的员工数量
    • 3、动态游标的创建与使用
  • 三、游标for循环
    • 1、输出student中年龄为20的所有学生的姓名。
  • 四、总结


一、游标的定义和类型 1、游标的基本概念

游标就是移动的光标,在oracle中,为了处理sql语句,在内存中会分配一个区域,又叫上下文区,整个区域是sql语句返回的数据集合,而游标就是指向这个上下文的指针。
使用游标,可以处理从数据库中返回的多行记录,逐个遍历和处理检索返回的记录集合。

2、游标的基本类型

游标分为两大类:静态游标和动态游标,其中静态游标又分为显示游标和隐式游标两种类型。
1、显示游标
显示游标是用户定义和操作的游标,用于处理使用select查询语句返回多行的查询结果,使用显示游标处理数据分为如下步骤:声明游标、打开游标、读取游标和关闭游标。
2、隐式游标
系统自动进行操作,用于处理DML语句的执行结果或者select查询返回的单行数据,使用时不需要进行声明、打开和关闭。
3、动态游标
显示游标在定义时与特定的查询绑定,其结构是不变的,而动态游标也称为游标变量,是一个指向多行查询结果的指针,不与特定的查询结果绑定,可以在打开游标变量时定义查询,可以返回不同结构的结果集。

3、静态游标属性

在静态游标中,不管是显式游标还是隐式游标,都具有%found,%notfound,%isopen和%rowcount等4个属性,可以通过这些属性获取SQL语句执行结果以及游标的状态信息。
1、%found:布尔型,判断是否检索到数据,如果检索到,属性值为true,否则为false。
2、%notfound:布尔型,与%found功能相反。
3、%isopen:布尔型,判断游标是否打开,如果打开,则返回属性值为true,否则为false。
4、%rowcount:数字型,返回受SQL语句影响的行数。
隐式游标的这4个属性在使用的时候,需要在属性前加入隐式游标的默认名称SQL,即SQL%found、SQL%notfound、SQL%isopen、SQL%rowcount。

二、游标的创建及使用 1、显示游标的创建与使用 1:声明游标

语法如下:

cursor 游标名称 [参数列表] is 

l例如,游标变量对应的查询语句如下所示。

open var_cursor for select * from student;

4、检索游标变量
和前面介绍的显示游标检索的方法一样,都是使用fetch…into…语句存储当前游标指向的记录值,并结合简单循环结构显示查询结果中的记录。

5、关闭游标变量
游标变量使用完,应及时关闭以释放缓冲区空间。语法如下。

close 游标变量
三、游标for循环

由于使用游标定义的查询或者操作返回多个记录集合到缓冲区,要想通过游标访问每条记录,需要结合循环结果使用,现在介绍两种循环结构的使用。
1、使用基本的loop循环结构,其使用语法如下。

loop
fetch...into...
exit when 游标名称%notfound
...
end loop;

2、使用while循环检索游标,其使用语法如下。

fetch...into...
while 游标名称%found loop
fetch...into...;
......
end loop;

前面这两种使用fetch…into…语句结合循环结构显示记录的时候,在使用游标之前还要打开游标,使用结束后要关闭游标,同时在使用过程中还要判断数据记录缓冲区中是否还有数据。此外,我们可以使用for循环结合游标检索数据,及游标for循环,这种方式不需要打开游标和关闭游标,也不需要使用fetch…into…语句检索数据。其语法格式如下。

for 循环变量 in 游标名称 loop
语句序列;
end loop;

其中,循环变量可以使任意合法的变量名称,系统会隐含地定义该变量的数据类型为游标名称%rowtype,然后自动打开游标,从缓冲区中取出当前游标指向的记录并放入循环变量中,并判断%found属性,以确定是否存在数据,如果数据已经检索完,则结束循环,并自动关闭游标。

1、输出student中年龄为20的所有学生的姓名。
declare
	cursor cur_stu is select * from student where age = 20;	--定义游标
begin
	for var_stu in cur_stu loop	--for循环游标
		dbms_output.put_line<'学生姓名:' || var_stu.name>;	--显示结果
	end loop;
end;
四、总结

这里的相关内容还没有整理完毕,文章后面持续更新,建议收藏。

文章中涉及到的命令大家一定要像我一样每个都敲几遍,只有在敲的过程中才能发现自己对命令是否真正的掌握了。

可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】获取福利,回复【项目】获取项目源码,回复【简历模板】获取简历模板,回复【学习路线图】获取学习路线图。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1002410.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号