知识大全 oracle游标

Posted 语句

篇首语:不登高山,不知天之高也;不临深溪,不知地之厚也。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 oracle游标相关的知识,希望对你有一定的参考价值。

  为了处理SQL语句 Oracle将在内存中分配一个区域 这就是上下文区 这个区包含了已经处理完的行数 指向被分析语句的指针 整个区是查询语句返回的数据行集 游标就是指向上下文区句柄或指针

  两种游标

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

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

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

   )声明游标 CURSOR cursor_name IS select_statement

   )为查询打开游标 OPEN cursor_name

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

  FETCH cursor_name INTO list_of_variables;

  FETCH cursor_name INTO PL/SQL_record;

   )关闭游标 CLOSE cursor_name

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

   显式游标

  select语句上 使用显式游标

  能明确访问结果集

  for循环游标

  参数游标

  解决多行记录的查询问题

  fetch游标

  二 隐式游标

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

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

  例如

  ……

  SELECT studentNo studentName

  INTO curStudentNo curStudentName

  FROM StudentRecord

  WHERE name= gg ;

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

   隐式游标

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

  用关键字SQL表示隐式游标

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

  %found     影响到了记录 true

  %notfound  没有影响到记录 true

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

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

  主要使用在update 和 delete语句上

  实际操作和例子

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

   < >定义游标

   < >定义游标变量

   < >使用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;

  ( ) fetch游标

   使用的时候 必须要明确的打开和关闭

  declare

   类型定义

  cursor cc is select empno ename job sal

  from emp where job = MANAGER ;

   定义一个游标变量

  ccrec cc%rowtype;

  begin

   打开游标

  open cc;

   loop循环

  loop

   提取一行数据到ccrec中

  fetch cc into ccrec;

   判断是否提取到值 没取到值就退出

   取到值cc%notfound 是false

   取不到值cc%notfound 是true

  exit when cc%notfound;

  dbms_output put_line(ccrec empno|| ||ccrec ename|| ||ccrec job|| ||ccrec sal);

  end loop;

   关闭游标

  close cc;

  end;

  游标的属性 种

  %notfound  fetch是否提到数据 没有true 提到false

  %found      fetch是否提到数据 有true 没提到false

  %rowcount  已经取出的记录的条数

  %isopen    布尔值 游标是否打开

  ( )参数游标

  按部门编号的顺序输出部门经理的名字

  declare

   部门

  cursor c is select deptno from dept;

   参数游标c 定义参数的时候

   只能指定类型 不能指定长度

   参数只能出现在select语句=号的右侧

  cursor c (no number pjob varchar ) is select emp * from emp

  where deptno = no and job=pjob;

  c rec c %rowtype;

  c rec c %rowtype;

   定义变量的时候要指定长度

  v_job varchar ( );

  begin

   部门

  for c rec in c loop

   参数在游标中使用

  for c rec in c (c rec deptno MANAGER ) loop

  dbms_output put_line(c rec deptno|| ||c rec ename);

  end loop;

  end loop;

  end;

  ( )引用游标/动态游标

   select语句是动态的

  declare

   定义一个类型(ref cursor)弱类型

  type cur is ref cursor;

   强类型(返回的结果集有要求)

  type cur is ref cursor return emp%rowtype;

   定义一个ref cursor类型的变量

  cura cur;

  c rec emp%rowtype;

  c rec dept%rowtype;

  begin

  DBMS_output put_line( 输出员工 )   ;

  open cura for select * from emp;

  loop

  fetch cura into c rec;

  exit when cura%notfound;

  DBMS_output put_line(c rec ename)   ;

  end loop ;

  DBMS_output put_line( 输出部门 )   ;

  open cura for select * from dept;

  loop

  fetch cura into c rec;

  exit when cura%notfound;

  DBMS_output put_line(c rec dname)   ;

  end loop;

  close cura;

cha138/Article/program/Oracle/201311/18404

相关参考

知识大全 Oracle游标使用总结

Oracle游标使用总结  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Oracle游标分为显示

知识大全 Oracle游标使用大全二

Oracle学习手册:Oracle游标使用大全二  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 Oracle数据库游标的类型

Oracle数据库游标的类型  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  游标是SQL的一个内

知识大全 Oracle数据库游标使用大全

Oracle数据库游标使用大全  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  SQL是用于访问O

知识大全 快速掌握Oracle数据库游标的使用方法

快速掌握Oracle数据库游标的使用方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  显式游标

知识大全 Oracle游标提取相关的数据的语法介绍

Oracle游标提取相关的数据的语法介绍  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  本文主要

知识大全 Oracle游标的删除与更新实际操作步骤

Oracle游标的删除与更新实际操作步骤  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  以下的文

知识大全 Oracle查看和修改其最大的游标数

Oracle查看和修改其最大的游标数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  以下的文章主

知识大全 oracle数据库中关于游标的常见用法

cha138/Article/program/Oracle/201311/19107