一、游标的相关概念:
 定义:
    游标它是一个服务器端的存储区,这个区域提供给用户使用,在这个区域里
存储的是用户通过一个查询语句得到的结果集,用户通过控制这个游标区域当中
的指针 来提取游标中的数据,然后来进行操作。
 
 实质:
     是用户在远程客户端上对服务器内存区域的操作,由数据库为用户提供这样的
一个指针,使得用户能够去检索服务器内存区的数据。
  (1)、 指向上下文区域的句柄或指针
  (2)、上下文区域-用于SQL处理的内存区
  (3)、上下文区域的内容
       - 语句处理的行数
       -指向语句的语法分析表示的指针
 
二、游标的类型
   a)静态游标
       -  隐式游标
       -  显式游标
   b)Ref游标
 
三、游标具有的属性
     %notfound 询问是否没有结果集
     %found    询问是否存在结果集
     %rowcount 返回受影响的行数
     %isopen   询问游标是否已经打开

四、先来说说隐式游标
   隐式游标 ---由Oracle数据库自动创建,名称是(SQL) ,主要用途是可以返回一个操作是否成功或失败.
  1.有Oracle在内部声明,由系统管理
  2.用于处理
     -DML语句   --注意只能用于DML语句哦。
     -返回单行的查询
  3.用于判断一个操作是否成功.
     SQL%notfound  --返回Boolean值  存在结果集返回 False
     SQL%found    --返回Boolean值   存在结果集返回 True
     SQL%rowcount  --用户成功提取数据的行数
     SQL%isopen   --在隐式游标里一般这个属性是自动打开和关闭的.且任何时候查询都返回False

 示例:向表中插入一行数据,询问是否插入成功.
 declare
   iCount int:=0;
 begin
    insert into place values(2,'beijing');
    DBMS_output.put_line('游标所影响的行数:'||SQL%rowcount);
    if SQL%NotFount then
      DBMS_output.put_line('NotFount为真);
    else
      DBMS_output.put_line('NofFount为假');
    end if;
 
     if SQL%Fount then
      DBMS_output.put_line('Fount为真);
     else
      DBMS_output.put_line('Fount为假');
     end if;

      if SQL%isopen then
      DBMS_output.put_line('isOpen为真);
     else
      DBMS_output.put_line('isOpen为假');
     end if;
    
    isCount:=SQL%rowcount;
    DBMS_output.put_line('影响了'||isCount||'行');
  end;

posted on 2009-04-11 11:10  feiyang68  阅读(1915)  评论(0编辑  收藏  举报