Oracle游标的创建与使用

在PL/SQL块执行SELECT ,INSERT,UPDATE,DELETE语句时,ORACLE会在内存中为其分配上下文区(Context Area)。游标是指向该区的指针,或是命名一个工作区(Work Area),或是一种结构化数据类型。
它为应用程序提供了一种对具有多行数据的查询结果集中每行数据进行单独处理的方法,是设计交互式应用程序的常用编程接口。
游标的优点:
游标允许应用程序对查询语句select 返回的行结果集中每一行进行相同或不同的操作
它还提供对基于游标位置而对表中数据进行删除或更新的能力
游标把作为面向集合的数据库管理系统和面向行的程序设计两者联系起来使两个数据处理方式能够进行沟通

定义好游标后开始:
打开游标
 OPEN    游标名;
检索记录
   FETCH语句检索记录集中的行,每次一行,每执行一次FETCH,游标前进到记录集的下一行。
关闭游标
 CLOSE    游标名;
 
简单描述如下:
游标的使用方法:
--创建游标
--打开游标
--遍历游标
--关闭游标
declare
    v_age stu.age%type;
    v_total_age stu.age%type;
    courso cur_var is select age from stu;--创建游标
begin
    v_total_age :=0;
    open cur_var;--打开游标
    fetche cur_var into v_age;
    while cur_var%found loop--遍历游标
        v_total_age :=v_total_age+v_age;
        fetch cur_var into v_age;
    end loop;
    close cur_var;
end;
 
通过上面的例子,下面简单介绍游标的属性:
(1)%FOUND – SQL 语句影响了一行或多行时为 TRUE,即游标找到数据就返回TRUE,反之则返回FALSE
(2)%NOTFOUND – SQL 语句没有影响任何行时为TRUE,即游标没有找到数据就返回TRUE,反之则返回FALSE
(3)%ROWCOUNT – SQL 语句影响的行数,即返回游标所找到的数据行数(返回一个整数)
(4)%ISOPEN  - 游标是否打开,即游标打开为TRUE,反之则为FALSE
 
使用显式游标更新行:
允许使用游标删除或更新活动集中的行
声明游标时必须使用 SELECT … FOR UPDATE语句
 
    CURSOR <cursor_name> IS
   SELECT statement FOR UPDATE;
 UPDATE <table_name>
 SET <set_clause>
 WHERE CURRENT OF <cursor_name>
例子:
DECLARE
  new_price NUMBER;
  CURSOR cur_toy IS
    SELECT toyprice FROM toys WHERE toyprice<100
    FOR UPDATE OF toyprice;
BEGIN
  OPEN cur_toy;
  LOOP
    FETCH cur_toy INTO new_price;
    EXIT WHEN cur_toy%NOTFOUND;
    UPDATE toys
    SET toyprice = 1.1*new_price
    WHERE CURRENT OF cur_toy;
  END LOOP;
  CLOSE cur_toy;
  COMMIT;
END;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值