游标

   游标是SQL的一个内存工作区,由系统或用户以变量的形式定义。游标的作用就是用于临时存储从数据库中提取的数据块。在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进行处理,最后将处理结果显示出来或最终写回数据库。这样数据处理的速度才会提高,否则频繁的磁盘数据交换会降低效率。游标有两种类型:显式游标和隐式游标。

   1. 声明游标

     在DECLEAR部分按以下格式声明游标: 
     CURSOR 游标名[(参数1 数据类型[,参数2 数据类型...])] 
     IS SELECT语句; 
     参数是可选部分,所定义的参数可以出现在SELECT语句的WHERE子句中。如果定义了参数,则必须在打开游标时传递相应的实际参数。 
     SELECT语句是对表或视图的查询语句,甚至也可以是联合查询。可以带WHERE条件、ORDER BY或GROUP BY等子句,但不能使用INTO子句。

     实例:

cursor c_name is (select namex from T_namex_j122);

   2. 打开游标 
     在可执行部分,按以下格式打开游标: 
     OPEN 游标名[(实际参数1[,实际参数2...])]; 

open c_name;

   3. 提取数据 

     在可执行部分,按以下格式将游标工作区中的数据取到变量中。提取操作必须在打开游标之后进行。 
     FETCH 游标名 INTO 变量名1[,变量名2...]; 

fetch c_name into mname;

如果有多个变量的话就是:
cursor emp_cursor is select ename,job from emp where empno=7788;   
fetch emp_cursor into v_ename,v_job;

   4.关闭游标 
     CLOSE 游标名; 
     显式游标打开后,必须显式地关闭。游标一旦关闭,游标占用的资源就被释放,游标变成无效,必须重新打开才能使用。

close c_name;

   5. 游标的属性   

     返回值类型   意义  

%rowcount   整型  获得FETCH语句返回的数据行数   
%found  布尔型 最近的FETCH语句返回一行数据则为真,否则为假   
%notfound  布尔型 与%FOUND属性返回值相反   
%isopen 布尔型 游标已经打开时值为真,否则为假  

     实例:

fetch emp_cursor into v_ename;   
   exit when emp_cursor%notfound;  

 

posted @ 2019-01-08 14:39  从让帝到the_rang  阅读(213)  评论(0编辑  收藏  举报