1、
游标是从数据表中提取出来的数据,以临时表的形式存放在内
存中
2、游标
例子1;
定义游标
:CURSOR
游标名 IS SELECT 查询语句
* 游标定义之后,在使用前必须通过“
OPEN
”打开游标。
打开游标
:
OPEN 游标名
将符合条件的记录送入内存
将指针指向第一条记录
例1
declare
cursor mycursor is select * from test ;
begin
open mycursor;
end;
提取数据
FETCH
游标名
INTO
变量名
1
,变量名
2
……
或
FETCH
游标名
INTO
记录型变量名
使用完要关闭游标
close 游标名字
3、游标状态
以游标 SQL 为例
SQL%ISOPEN
返回的类型为布尔型
,
判断游标是否被打开,如果打开
%ISOPEN
等于
true,
否则等于
false,
即执行过程中为真
,
结束后为假。
SQL%NOTFOUND返回值为布尔型,判断游标所在的行是否有效,如果有效,则%FOUNDD等于true,否则等于false,即与%FOUND属性返回值相反。
SQL%FOUND返回值的类型为布尔型,值为TRUE代表插入删除更新或单行查询操作成功。
SQL%ROWCOUNT返回值类型为整型,返回当前位置为止游标读取的记录行数,即成功执行的数据行数。
SQL%rowtype 获取一条记录类型
示例代码如下:
declare
cursor SQL is select * from test
;
currecord SQL%rowtype
; //获取这一行记录的类型
begin
open mycursor; //打开游标
fetch mycursor into currecord
; // 往下下移动游标
dbms_output.PUT_LINE(to_char(currecord.num)); //输出游标信息
close mycursor
;
end;
例子2;
declare
cursor mycursor is select * from emp ;
currecord mycursor%rowtype ;
begin
open mycursor;
loop
fetch mycursor into currecord ;
exit when mycursor%notfound;
dbms_output.put_line(mycursor%rowcount);
dbms_output.put_line(currecord.ename);
end loop;
close mycursor;
end;