求学资讯 oracle认证 提问
oracle认证 > PLSQL

ORACLE认证PLSQL:游标学习

来源:用户上传 上传用户: 发布时间:2017-04-08

导读:
求学资讯网第一时间为您带来“ORACLE认证PLSQL:游标学习”等新鲜资讯。

ORACLE认证PLSQL:游标学习


  游标

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

  上下文区域--用于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;


声明:本站为免费网络服务提供商,网站所有信息均为用户自行发布并由用户承担相应法律责任,本站不对其真实性及合法性负责,如涉及侵权或者信息违法,请你及时与本站联系删除。

阅读 393 举报

相关推荐
评论0

当前没有评论内容

发表评论 0条评论
0
微博
QQ
QQ空间
微信
取消