日期:2014-05-16  浏览次数:20462 次

oracle 游标管理
游标:
游标:逐行处理查询结果,以编程的方式访问数据。

游标的分类:
隐式游标:用于处理返回单行的结果。

显式游标:用于处理返回多行的结果

REF(动态游标):用于处理动态SQL语句返回的结果。

隐式游标

名称:统一为SQL。用于判断最近执行的那一条DML语句。

Select into 也是隐式游标。

只能够返回一行的数据。

显示游标
步骤:
A:声明一个显示游标
cursor 游标名字[(参数变量名 类型,参数变量名2 类型...)] is 查询结果集语句 [for update]

B:打开游标
open 游标名字[实参值,实参值...]

C:提取游标中的数据到变量。(做循环)
fetch 游标名字 into 接收变量;

D:关闭游标。
close 游标名称

显示游标的可更新用法

定义 后 加上for update
提取后
修改或者删除语句 where current of 游标名称。

直接用update,delete来代替可更新的显示游标。

游标for循环
for 一个游标FOR循环可以隐含的实现OPEN,FETCH,CLOSE游标以及循环处理结果集的功能。
语法
FOR 接收变量 IN 游标名字
LOOP
<executable statements>
END LOOP;



REF的动态游标。

强类型的REF游标(指定游标返回值类型)
TYPE my_curtype IS REF CURSOR
  RETURN stud_det%ROWTYPE;
order_cur my_curtype;



弱类型的REF游标,才能够执行动态SQL语句。
不指定返回值类型 返回值类型由游标动态执行决定
TYPE my_ctype IS REF CURSOR;
stud_cur my_ctype;