游标:游动的光标。游标是映射在结果集中一行数据上的位置实体,有了游标,用户就可以访问结果集中的任意一行数据了。将游标放置到某行后,即可对该行数据进行操作,最常见的操作是提取当前行数据。
游标分两种:显式游标, 隐式游标
隐式游标 : 不需要声明,使用时也不需要执行打开和关闭操作。实际上,就是在Select语句中增加了INTO子句,把结果集自动读取到指定的变量中。
FI : 使用SELECT语句声明隐式游标,从Students表中读取Sname字段的值到变量BugsBug:
显式游标:显式游标需要声明,在使用之前需要打开游标,使用完成后要关闭游标。使用显式游标的步骤包括:
(1)声明游标。
(2)打开游标。
(3)读取数据。
(4)关闭游标。
声明游标语句CURSOR
DECLARE CURSOR <游标名>
[ (<参数列表>) ]
IS
<SELECT语句>;
FI : 声明一个游标BugsBug,读取指定类型的用户信息:
为什么出错因为这只是程序的一部分而已....
打开游标语句OPEN:
OPEN <游标名> [ (<参数列表>) ];
FI :open BugsBug(1);
游标取值语句FETCH。游标取值语句FETCH的基本语法结构如下:
FETCH <游标名> INTO <变量列表>;
FI :fetch BugsBug into 声明列表变量“,”分割
关闭游标语句CLOSE:
CLOSE <游标名>;
FI : close BugsBug;
游标属性
%ISOPEN属性 判断游标是否被打开,如果打开,则%ISOPEN等于TRUE,否则等于FALSE。
%FOUND属性和%NOTFOUND属性
%FOUND属性用来判断游标所在的行是否有效,如果有效,返回TRUE,无效时返回FALSE。
%ROWCOUNT属性 返回到当前位置为止游标读取的记录行数。
游标FOR循环
游标FOR循环是显式游标的一种快捷使用方式,它使用FOR循环依次读取结果集中的行数据。
当FOR循环开始时,游标被自动打开(不再需要OPEN语句);
每循环一次,系统自动读取游标当前行的数据(不需要使用FETCH语句);
当退出循环时,游标自动关闭(不需要使用CLOSE语句)。
游标FOR循环通常与PL/SQL记录一起使用。
PL/SQL记录(RECORD)是由一组数据构成的逻辑单元,并不保存在数据库中,与变量一样,保存在内存空间中。
使用记录时,需要先定义记录的结构,然后声明记录变量。
定义记录类型的基本语法如下:
TYPE <记录类型名> IS RECORD (字段声明 [,字段声明] …);
定义记录变量的方法与定义普通变量的方法相同,语法如下:
<记录变量名> <记录变量类型>
FI :声明记录类型TBugsBug和定义记录变量BugsBug:
典型游标FOR循环需要先对游标进行声明,然后才可以使用。典型游标FOR循环的语法说明如下:
FOR <记录名> IN <游标名> LOOP
语句1;
语句2;
…
语句n;
END LOOP;
带子查询的典型游标FOR循环的语法说明如下:
FOR <记录名> IN <SELECT子查询> LOOP
语句1;
语句2;
…
语句n;
END LOOP;