当前所在位置:珠峰网资料 >> 计算机 >> Oracle认证 >> 正文
ORACLEPLSQL游标学习(一)
发布时间:2010/11/12 14:19:36 来源:www.xue.net 编辑:城市总裁吧
      游标

  游标是指向上下文区域的句柄或指针

  上下文区域--用于SQL处理的内存区

  上下文区域的内容

  语句处理的行数

  指向语句的语法分析表示的指针

  游标的类型

  1、静态游标

  隐式游标

  显示游标

  2、REF游标(动态游标)

  一、隐式游标

  有ORACLE在内部声明

  用于处理

  DML语句

  返回单行的查询

  游标属性:

  1、%NOTFOUND 对数据操作成功返回FALSE,否则返回TRUE

  2、%FOUND  对数据操作成功返回TRUE,否则返回FALSE

  3、%ROWCOUNT  游标影响的行数

  4、%ISOPEN   游标是否打开

  begin

  insert into cities values('aaa','bbb');

  DBMS_OUTPUT.PUT_LINE('游标所影响的行数:'||SQL%ROWCOUNT);

  if SQL%NOTFOUND then

  DBMS_OUTPUT.PUT_LINE('NOTFOUND为真');

  else

  DBMS_OUTPUT.PUT_LINE('NOTFOUND为假');

  end if;

  if SQL%FOUND then

  DBMS_OUTPUT.PUT_LINE('FOUND为真');

  else

  DBMS_OUTPUT.PUT_LINE('FOUND为假');

  end if;

  if SQL%ISOPEN then

  DBMS_OUTPUT.PUT_LINE('ISOPEN为真');

  else

  DBMS_OUTPUT.PUT_LINE('ISOPEN为假');

  end if;

  end;

  输出结果为:

  游标所影响的行数:1

  NOTFOUND为假

  FOUND为真

  ISOPEN为假

  declare

  icount int :=0;

  begin

  insert into cities values ('aaa','bbb');

  if SQL%NOTFOUND then

  DBMS_OUTPUT.PUT_LINE('没有插入成功');

  else

  DBMS_OUTPUT.PUT_LINE('插入成功');

  end if;

  commit;

  end;

  输出结果为:

  插入成功

  declare

  icount int :=0;

  begin

  update cities set country='aaaa';

  if SQL%NOTFOUND then

  DBMS_OUTPUT.PUT_LINE('没有更新成功');

  else

  DBMS_OUTPUT.PUT_LINE('更新成功');

  end if;

  commit;

  end;

  输出结果为:

  更新成功

  二、显式游标

  由用户显式声明

  游标将指向活动集中的当前行

  控制显示游标

  Open

  Fetch

  Close

  declare

  cursor empCur is select * from emp;

  emprow emp%ROWTYPE;

  begin

  open empCur;

  fetch empCur into emprow;

  DBMS_OUTPUT.put_line(emprow.empno||'  '||emprow.ename);

  close empCur;

  end;

  输出结果

  7369  SMITH

  loop循环

  declare

  cursor empCur is select * from emp;

  emprow emp%ROWTYPE;

  begin

  open empCur;

  loop

  fetch empCur into emprow;

  DBMS_OUTPUT.put_line(emprow.empno||'  '||emprow.ename);

  DBMS_OUTPUT.put_line('提取了'||empCur%ROWCOUNT||'行');

  --exit when empCur%NOTFOUND;

  if empCur%NOTFOUND then

  exit ;

  end if;

  end loop;

  close empCur;

  end;

广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved