Oracle游标使用总结

发表于:2010-6-28 10:48

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

分享:

  (4)常用的使用EXIT WHEN处理游标

  create or replace
  PROCEDURE PROC_STU1_1 AS
  BEGIN

  --显示游标使用,使用exit when循环

  declare

  --1.定义游标,名称为cur_stu

  cursor cur_stu is
  select stuno,stuname from student order by stuno;

  --定义变量,存放游标取出的数据

  v_stuno varchar(4);
  v_stuname varchar(20);
  begin

  --2.打开游标cur_stu

  open cur_stu;
  loop

  --3.将游标的当前行取出存放到变量中

  fetch cur_stu into v_stuno,v_stuname;
  exit when cur_stu%notfound; --游标所指还有数据行,则继续循环

  --打印结果

  dbms_output.PUT_LINE(v_stuno||'->'||v_stuname);
  end loop;
  close cur_stu; --4.关闭游标
  end;
  END PROC_STU1_1;

  二.隐式游标

  1、使用演示

  create or replace PROCEDURE PROC_STU4 AS
  BEGIN

  --隐式游标使用

  update student set stuname='张燕广' where stuno='1104';

  --如果更新没有匹配则插入一条新记录

if SQL%NOTFOUND then
insert into student(STUNO,STUNAME,AGE,GENDER)
values('1104','张燕广',18,'男');
end if;
END PROC_STU4;

  2、说明

  所有的SQL语句在上下文区内部都是可执行的,因为都有一个游标指向上下文区,此游标就是SQL游标,与现实游标不同的是,SQL游标在PL/SQL中不需要打开和关闭,而是在执行UPDATE、DELETE是自动打开和关闭。
  
  上面例子中就是通过SQL%NOTFOUND游标属性判断UPDATE语句的执行结果决定是否需要插入新记录。

CREATE TABLE "STUDENT" (
  "STUNAME" VARCHAR2(10 BYTE),
  "STUNO" VARCHAR2(4 BYTE),
  "AGE" NUMBER,
  "GENDER" VARCHAR2(2 CHAR)
)

33/3<123
重磅发布,2022软件测试行业现状调查报告~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号