Oracle学习历程1–
Oracle学习历程1–游标
最近在学习Oracle的一系列逻辑性问题,首先触及了游标,游标相当于一个指针指向缓存区的数据行,当缓存区的第一个数据被读取后,会继续指向下一个数据行,直至缓存区的数据行为空;游标在Oracle中被分为显性游标和隐形游标。
**显性游标:**简单来说就是用户在定义阶段自己创建的游标;如:Cursor cur_ex is select * from class_new where name=‘幼儿园1班’;
**隐性游标:**就是Oracle系统自行创建的游标,在用户执行一些执行性语句时,Oracle会自动创建一个隐形游标,这个游标是不被定义的,如:你执行的insert,select,delete语句。
而当我们定义显性游标时,会有常规的四个步骤需要创建:
1:定义游标(另外定义一个用来存储游标读取的数据);
Declare
class_new1 class_new%rowtype;--定义一个和class_new字段名称和类型一样的变量
cursor cur_ex is select * from class_new where name='幼儿园1班';--显性游标
2:打开游标;
begin
open cur_ex;--打开游标
3:读取游标(如果游标中有多行数据,就需要使用循环进行读取);
fetch cur_ex into class_new1;
loop
insert into class_new2 values(class_new1.class_id,class_new1.class_name,class_new1.class_te,class_new1.class_date);
commit;
fetch cur_ex into class_new1;
exit when cur_ex%notfound;
end loop;
4:关闭游标;
close cur_ex;
在继续学习游标中,上述的四个常规步骤我们可以简便处理,比如在循环 读取游标时,我们可以使用FOR语句简便处理。
会使用到
for class_new1 in cur_ex loop
而如果我们使用FOR语句时,就不需要在begin中open cursor和close cursor了。
上面的整体代码可以这样写:
declare
class_new1 class_new%rowtype;--定义一个和class_new字段名称和类型一样的变量
cursor cur_ex is select * from class_new where name='幼儿园1班';--显性游标
begin
for class_new1 in cur_ex loop
insert into class_new2 values(class_new1.class_id,class_new1.class_name,class_new1.class_te,class_new1.class_date);
commit;
end loop;
end;
使用FOR语句会简便很多。
本文介绍了Oracle中的游标概念,游标作为数据行指针,分为显性游标和隐性游标。显性游标需要用户定义,包括定义、打开、读取和关闭四个步骤。隐性游标则由Oracle系统自动创建。在处理多行数据时,可以使用FOR语句简化显性游标的读取操作,避免手动打开和关闭游标。
5039

被折叠的 条评论
为什么被折叠?



