Heim  >  Artikel  >  Datenbank  >  Oracle数据库游标

Oracle数据库游标

WBOY
WBOYOriginal
2016-06-07 17:18:201060Durchsuche

游标是SQL的一个内存工作区,由系统或用户以变量形式定义。游标的作用是用于临时存储从数据库中提取的数据块。为什么要用游标?数

游标的概念

游标是SQL的一个内存工作区,由系统或用户以变量形式定义。

游标的作用是用于临时存储从数据库中提取的数据块。

为什么要用游标?数据库的数据是存放在磁盘中的,游标是把数据从磁盘中调到计算机内存中进行处理,最后将处理结果显示出来或者最终写回数据库,这样可以提高数据处理的效率,因为频繁的磁盘数据交换会降低效率。

游标有两种类型:隐式游标和显示游标。

隐式游标:对于SELECT...INTO...语句(一次只能从数据库中提取一行记录)和DML(数据操纵语言,也就是INSERT语句、UPDATE语句和DELETE语句),系统都会采用隐式游标。

显示游标:对于结果集多于1条记录的SELECT语句,需要程序员自己定义一个显示游标。

隐式游标

隐式游标的四个属性

%FOUNT 值true代表单行查询语句或DML语句操作成功

%NOTFOUNT 与%Found相反

%ISOPEN DML执行中为true,执行结束后为false

%ROWCOUNT 代表DML语句成功执行的数据行数

使用隐游标的一个例子:

  • 显示游标

    显示游标的四个属性

    %FOUNT 最近的FETCH语句返回一行记录则true,否则为false

    %NOTFOUNT 与%Found相反

    %ISOPEN 游标打开时为true,否则为false

    %ROWCOUNT 获取FETCH语句返回的行数

    显示游标的使用分以下4个步骤:

    声明游标

    打开游标

    提取数据

    关闭游标

    声明游标:

    CURSOR 游标名[(参数1 数据类型[,参数2 数据类型...])] IS SELECT语句;

    参数是可选部分

    打开游标:

    OPEN 游标名[(实际参数1[,实际参数2...])];

    参数是可选部分,打开游标时,结果集就被送到的游标工作区

    提取数据:

    FETCH 游标名 INTO 变量名1[,变量名2...];

    FETCH 游标名 INTO 记录变量;

    游标打开后有一个指针指向数据区,FETCH语句一次返回指针所指的一行数据,要返回多行需重复执行,可以使用循环语句来实现。控制循环可以通过判断游标的属性来进行。

    第一种FETCH格式:变量名是用来从游标中接收数据的变量,,需要事先定义。变量的个数和类型应与SELECT语句中的字段变量的个数和类型一致。

    第二种FETCH格式:一次将一行数据提取到记录变量中,需要使用%ROWTYPE事先定义记录变量,这种形式使用起来比较方便,不必分别定义和使用多个变量。定义记录变量的方法:变量名 表名|游标名%ROWTYPE; 其中的表必须存在,游标名也必须先定义。

    linux

  • Stellungnahme:
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn