PL/SQL中的游标

来源:互联网 发布:淘宝衣服质量差 编辑:程序博客网 时间:2024/06/05 10:52
为了处理 SQL 语句,ORACLE 必须分配一片叫上下文( context area )的区域来处理所必需的信息,其中包括要处理的行的数目,一个指向语句被分析以后的表示形式的指针以及查询的活动集(active set)。

游标是一个指向上下文的句柄( handle)或指针。通过游标,PL/SQL可以控制上下文区和处理语句时上下文区会发生些什么事情。

处理显式游标需要四个 PL/SQL步骤: 

定义游标:就是定义一个游标名,以及与其相对应的SELECT 语句 ,     其一般形式为:
   CURSOR cursor_name IS  select_statement; 

打开游标:就是执行游标所对应的SELECT 语句,将其查询结果放入工作区,并且指针指向工作区的首部,标识游标结果集合。    

OPEN cursor_name 

提取游标:就是检索结果集合中的数据行,放入指定的输出变量中。

FETCH cursor_name INTO {variable_list | record_variable }; 

关闭游标:当提取和处理完游标结果集合数据后,应及时关闭游标,以释放该游标所占用的系统资源,并使该游标的工作区变成无效,不能再使用FETCH 语句取其中数据。

CLOSE cursor_name;

例:

例:DECLARE
  v_ename  emp.ename%TYPE;
    v_sal      emp.sal%TYPE;
    CURSOR c_cursor IS SELECT ename, sal FROM emp WHERE rownum<11;
BEGIN
OPEN c_cursor;
FETCH c_cursor INTO v_ename, v_sal;
WHILE c_cursor %FOUND LOOP
   DBMS_OUTPUT.PUT_LINE(v_ename||’---‘||to_char(v_sal) );
   FETCH c_cursor INTO v_ename, v_sal;
END LOOP;
CLOSE c_cursor;
END;