--指向表行的指针,一次一行,一般向前移动 Resultset
--游标永远代代表的是一行数据。
/*
使用步骤
第一步:声明游标,就像是声明一个变量样。
游标的关键字就是cursor.
Declare
--游标关键字在前面
Cursor myCusor is select * from someTable;
Begin
//代码
End;
第二步:声明游标后并不能直接使用-打开游标
Declare
--游标关键字在前面
Cursor myCusor is select * from someTable;
Begin
Open myCursor;
End;
第三步:在遍历中,使用fetch遍历数据
Declare
--游标关键字在前面
Cursor myCusor is select * from someTable;
Begin
Open myCursor;
Loop
Fetch myCusor into 你声明的变量;
--加上一个判断,是否到了行了最后
Exit when myCursor%notfound;
End loop;
End;
第四步:关闭游标
Declare
--游标关键字在前面
Cursor myCusor is select * from someTable;
Begin
Open myCursor;
Loop
Fetch myCusor into 你声明的变量;
--加上一个判断,是否到了行了最后
Exit when myCursor%notfound;
End loop;
Close myCursor; - oracle默认情况下,最多只可以开15个游标。
End;
*/
/*
游标的分类
声明方式:
隐式游标
所有你在执行sql(CRUD)语句时,oracle都会默认的给你打开一个游标。
游标名称叫SQL
它包含以下属性:
ROWCOUNT – 这个查询或是修改的记录的数量。
Notfound没有发行现
显式游标
是指用户在declare中显式声明的游标。
动态的游标
*/
--隐式的游标
select * from EMP1;
/*
30
30
39
200*/
declare
v_count int;
v_found boolean;
begin
DELETE from emp1 where age=30;
--获取行号
v_count:=sql%rowcount;
if not sql%isopen then
SYS.DBMS_OUTPUT.PUT_LINE('xxxx数');
end if;
DBMS_OUTPUT.PUT_LINE('影响行数'||v_count);
end;
/*
匿名块已完成
xxxx数
影响行数2
*/