Oracle-游标

本文介绍了Oracle中的游标概念,游标作为数据行指针,分为显性游标和隐性游标。显性游标需要用户定义,包括定义、打开、读取和关闭四个步骤。隐性游标则由Oracle系统自动创建。在处理多行数据时,可以使用FOR语句简化显性游标的读取操作,避免手动打开和关闭游标。

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语句会简便很多。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值