和我一起恶补pl/sql(第三讲)

隔了好多天才写第三篇,主要是对游标的探讨

游标:作用:遍历一个查询结果,是对查询结果的一种标记,可以对结果进行操作或者选择行输出,简单地说:游标就是你对一个已经查询的结果做一次for循环,从第一条读到最后一条,行话叫遍历。

oracle游标是pl/sql的重要组成部分,在pl/sql中,当查询结果超过一行时的,就需要用到游标,游标是sql的一个内存工作区,由系统或用户已变量形式定义,作用是用于临时存储从数据库中提取的数据块。在某些时候,需要把数据从存放在磁盘的表中调用到计算机内存中进行处理,否则频繁的磁盘数据交换会降低效率。

游标有两种类型:显式游标或隐式游标,比如select ...into...查询语句,一次只能从数据库提取一行数据,对于这种形式的查询和dwl操作,系统会使用一个隐式的游标。但是如果要是提取多行数据,就要程序员定义一个显式游标,并通过与游标有关的语句进行处理。显式游标对应一个返回结果为多行多列的select语句。游标一旦打开,数据就从数据库传送到游标变量中,然后应用程序再从游标变量中分解出需要的数据,并进行处理。

语法规则学习:

游标声明:

cursor mycur(type number) is

    select empno,empcc from cus_emp where comno = type;

游标打开:

open mycur(100);

读取游标:

fetch mycur into varno,varprice;

关闭游标:

close mycur;

游标的属性:

%isopen ,%found ,%notfound ,%rowcount

%isopen:判断是否打开

%found:判断游标所在的行是否有效

%rowcount:返回当前的位置为止游标读取的记录的行数

游标的for循环:

declare cursor c1 is

    select name,sal,dep from emp;

    ....

begin

    for emp_re in c1 Loop

         ....

         sal_tol :=sal_tol+emp.sal;

    end loop

end;

open --fetch --close  可以用for循环代替,for循环会自动打开,关闭游标。

好了游标基本就是这个样子了,相信还是很简单,但是很重要的内容,以后我还会讲过程的详细用法。

原文地址:https://www.cnblogs.com/lmfeng/p/2092151.html