当前所在位置:珠峰网资料 >> 计算机 >> Oracle认证 >> 正文
oracle游标(一)
发布时间:2010/10/6 10:30:06 来源:www.xue.net 编辑:城市总裁吧
 为了处理SQL语句,Oracle将在内存中分配一个区域,这就是上下文区。这个区包含了已经处理完的行数、指向被分析语句的指针,整个区是查询语句返回的数据行集。游标就是指向上下文区句柄或指针。

  两种游标:

  一、显示游标(需要明确定义!)

  显示游标被用于处理返回多行数据的SELECT 语句,游标名通过CURSOR….IS 语句显示地赋给SELECT 语句。

  在PL/SQL中处理显示游标所必需的四个步骤:

  1)声明游标;CURSOR cursor_name IS select_statement

  2)为查询打开游标;OPEN cursor_name

  3)取得结果放入PL/SQL变量中;

  FETCH cursor_name INTO list_of_variables;

  FETCH cursor_name INTO PL/SQL_record;

  4)关闭游标。CLOSE cursor_name

  注意:在声明游标时,select_statement不能包含INTO子句。当使用显示游标时,INTO子句是FETCH语句的一部分。

  1、 显式游标

  select语句上 使用显式游标

  能明确访问结果集

  for循环游标

  参数游标

  解决多行记录的查询问题

  fetch游标

  二、隐式游标

  所有的隐式游标都被假设为只返回一条记录。

  使用隐式游标时,用户无需进行声明、打开及关闭。PL/SQL隐含地打开、处理,然后关掉游标。

  例如:

  …….

  SELECT studentNo,studentName

  INTO curStudentNo,curStudentName

  FROM StudentRecord

  WHERE name=’gg’;

  上述游标自动打开,并把相关值赋给对应变量,然后关闭。执行完后,PL/SQL变量curStudentNo,curStudentName中已经有了值。

  2、 隐式游标

  单条sql语句所产生的结果集合

  用关键字SQL表示隐式游标

  4个属性 %rowcount  影响的记录的行数  整数

  %found     影响到了记录 true

  %notfound  没有影响到记录 true

  %isopen    是否打开  布尔值 永远是false

  多条sql语句 隐式游标SQL永远指的是最后一条sql语句的结果

  主要使用在update 和 delete语句上

  实际操作和例子:

  (1)FOR循环游标 (常用的一种游标)

  --<1>定义游标

  --<2>定义游标变量

  --<3>使用for循环来使用这个游标

  --前向游标 只能往一个方向走

  --效率很高

  declare

  --类型定义

  cursor cc is select empno,ename,job,sal

  from emp where job = 'MANAGER';

  --定义一个游标变量

  ccrec cc%rowtype;

  begin

  --for循环

  for ccrec in cc loop

  dbms_output.put_line(ccrec.empno||'-'||ccrec.ename||'-'||ccrec.job||'-'||ccrec.sal);

  end loop;

  end;

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