游标
- SQL语言是面向集合的,是对指定列的操作。如果要对列中的指定行进行操作,就必须使用游标。
- 当在PL/SQL块中执行查询语句(SELECT) 和数据操纵语句(DML) 时,Oracle会为其分配一个上下文区(Context Area)
- 游标是指向上下文区的指针,它为应用提供了一种对具有多行数据查询结果集中的每一行数据分别进行单独处理的方法
显式游标
游标分为显式游标和隐含游标两种
- 隐含游标用于处理SELECT INTO和DML语句
- 显式游标则用于处理S ELECT语句返回的多行数据
- 使用显式游标
定义游标
CURSOR cursor_ name IS select statement;
打开游标
OPEN cursor name;
提取数据
FETCH cursor_name INTO variable1,variable...;
FETCH cursor_name bulk collect into collect1..;
关闭游标
CLOSE cursor name;
代码:
显示游标属性
显式游标属性用于返回显式游标的执行信息
- 游标属性使用格式为: 游标名+ 属性名
- %ISOPEN
用于确定游标是否已经打开。如果游标已经打开,则返回值为TRUE; 否则返回FALSE
- %FOUND
检查是否从结果集中提取到数据。如果提取到数据,则返回值为TRUE; 否则返回FALSE
- %NOTFOUND
与%FOUND属性恰好相反,如果提取到数据,则返回值为FALSE; 否则返回TRUE
- %ROWCOUNT
返回到当前行为止已经提取到的实际行数
参数游标
参数游标是指带有参数的游标。在定义了参数游标之后,使用不同参数值多次打开游标可以生成不同的结果集。
代码:
游标for循环
游标for循环是在pl/sql块中使用游标的最简单方式,它可以简化对游标的处理。当使用游标for循环时,oracle会隐含的打开游标,提取游标数据并关闭游标。
代码:
上面代码中无须进行取值和关闭的操作,游标for循环可以自己进行。
下面还有一个更为简单的游标for循环,参考上面的代码进行读阅:
使用游标变量

代码实例:
隐含游标
作用:用属性进行一些判断(一种判断方式)
含义:当执行一条DML语句或者SELECT...INTO语句时,都会创建一个隐含游标。
隐含游标的名称是SQL,不能对SQL游标显示执行OPEN、FETCH和CLOSE语句。
Oracle隐式地打开、提取,并总是自动地关闭SQL游标。
属性:
- SQL%FOUND:只有DML语句影响一行或多行时,SQL%FOUND属性才返回true。
- SQL%NOTDOUND:如果DNL语句没有影响行数,此属性将返回false。
- SQL%ROWCOUNT:返回DML影响的行数,如果DML语句没有影响行则返回0.
- SQL%ISOPEN:此属性用于判断SQL游标是否已经打开。在执行SQL语句之后,Oracle自动关闭SQL游标,所以隐含游标的SQL%ISOPEN属性始终为false。
简单示例1:
示例2:
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/1023.html