`
zengshaotao
  • 浏览: 788043 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

游标,MySQL

 
阅读更多

游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。每个游标区都有一个名字。用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理.

 

 显式游标处理需四个 PL/SQL步骤:

  1、定义/声明游标:就是定义一个游标名,以及与其相对应的SELECT 语句。

  格式:

 

    CURSOR cursor_name[(parameter[, parameter]…)]
           [RETURN datatype]
    IS
        select_statement;

 

  游标参数只能为输入参数,其格式为:

  parameter_name [IN] datatype [{:= | DEFAULT} expression]

  在指定数据类型时,不能使用长度约束。如NUMBER(4),CHAR(10) 等都是错误的。

  [RETURN  datatype]是可选的,表示游标返回数据的数据。如果选择,则应该严格与select_statement中的选择列表在次序和数据类型上匹配。一般是记录数据类型或带“%ROWTYPE”的数据。

  2、打开游标:就是执行游标所对应的SELECT 语句,将其查询结果放入工作区,并且指针指向工作区的首部,标识游标结果集合。如果游标查询语句中带有FOR UPDATE选项,OPEN 语句还将锁定数据库表中游标结果集合对应的数据行。

  格式:

  OPEN cursor_name[([parameter =>] value[, [parameter =>] value]…)];

  在向游标传递参数时,可以使用与函数参数相同的传值方法,即位置表示法和名称表示法。PL/SQL 程序不能用OPEN 语句重复打开一个游标。

  3、提取游标数据:就是检索结果集合中的数据行,放入指定的输出变量中。

  格式:

  FETCH cursor_name INTO {variable_list | record_variable };

  执行FETCH语句时,每次返回一个数据行,然后自动将游标移动指向下一个数据行。当检索到最后一行数据时,如果再次执行FETCH语句,将操作失败,并将游标属性%NOTFOUND置为TRUE。所以每次执行完FETCH语句后,检查游标属性%NOTFOUND就可以判断FETCH语句是否执行成功并返回一个数据行,以便确定是否给对应的变量赋了值。

  4关闭游标:当提取和处理完游标结果集合数据后,应及时关闭游标,以释放该游标所占用的系统资源,并使该游标的工作区变成无效,不能再使用FETCH 语句取其中数据。关闭后的游标可以使用OPEN 语句重新打开。

  格式:

  CLOSE cursor_name;

  下面用一个例子来说明:

 

CREATE OR REPLACE PROCEDURE testcur IS
  CURSOR c_cursor(r_no NUMBER DEFAULT 5)IS
    SELECT ISBN, TITLE
      FROM BOOKS
&nbsp;&nbsp;&nbsp;&nbsp; WHERE rownum < r_no
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FOR UPDATE;
&nbsp; v_isbn BOOKS.ISBN%TYPE;
&nbsp; v_title&nbsp;&nbsp; BOOKS.TITLE%TYPE;

BEGIN
&nbsp; --OPEN c_cursor(5);
&nbsp; OPEN c_cursor(r_no=>7);
&nbsp; DBMS_OUTPUT.PUT_LINE('opened cursor'); --afater open
&nbsp; --DBMS_LOCK.SLEEP(30);

&nbsp; FETCH c_cursor
&nbsp;&nbsp;&nbsp; INTO v_isbn, v_title;
&nbsp; DBMS_OUTPUT.PUT_LINE('fetched cursor');
&nbsp; --DBMS_LOCK.SLEEP(30);
&nbsp; WHILE c_cursor%FOUND LOOP
&nbsp;&nbsp;&nbsp; DBMS_OUTPUT.PUT_LINE(v_isbn || '---' || to_char(v_title));
&nbsp;&nbsp;&nbsp; FETCH c_cursor
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INTO v_isbn, v_title;
&nbsp; END LOOP;
&nbsp; CLOSE c_cursor;
&nbsp; DBMS_OUTPUT.PUT_LINE('closed cursor');
&nbsp; ROLLBACK;
&nbsp; DBMS_OUTPUT.PUT_LINE('ended transaction');
END testcur;

分享到:
评论

相关推荐

    Mysql游标(循环操作)

    ### MySQL游标(循环操作) #### 一、游标简介 在MySQL中,游标是一种数据库对象,主要用于处理存储过程中的结果集。游标允许我们逐行地读取查询结果,这对于需要对每一行数据执行特定操作的情况非常有用。通过...

    jdbcTemplate分页彻底解决,使用游标滚动

    在处理大量数据时,传统的分页方法可能会导致内存溢出,这时我们可以利用游标滚动来实现更高效、更节省内存的分页。本文将深入探讨如何使用`JdbcTemplate`配合游标滚动来解决分页问题,并结合提供的两个文件`...

    mysql游标

    MySQL游标是数据库管理系统中一个重要的概念,它在处理大量数据时非常有用,尤其是在需要逐行处理查询结果的情况下。游标允许程序动态地访问和操作数据集,而不是一次性加载所有结果。在MySQL中,游标主要用于存储...

    mysql游标详解

    MySQL 游标详解 MySQL 从 5.0 版本开始支持存储过程和触发器,而游标在递归树结构中非常有用。游标是 MySQL 中的一种机制,允许开发人员在存储过程和触发器中控制数据的获取和处理。 在 MySQL 中,游标是通过 ...

    Mysql中sql语句游标详解

    ### MySQL中SQL语句游标详解 #### 一、引言 在数据库开发过程中,当开发者需要逐条处理从查询结果集中获取的数据时,游标成为了一种非常实用且强大的工具。本文旨在深入探讨MySQL中游标的概念及其使用方法,帮助...

    Mysql存储过程游标触发器

    Mysql存储过程游标触发器

    mysql游标实现到了最后一个结束之后结束循环

    MySQL游标是数据库管理系统中用于遍历查询结果集的一种机制,尤其在处理大量数据或进行迭代操作时,游标显得尤为重要。这篇博文可能是探讨如何在MySQL中使用游标,特别是当游标执行到最后一行后如何正确地结束循环。...

    MySql游标的使用实例

    MySQL游标是数据库管理系统中的一个重要概念,主要用于在存储过程或函数中逐行处理查询结果集。游标允许程序按需一次处理一行数据,而非一次性获取所有数据,这在处理大量数据时尤其有用,因为它可以避免一次性加载...

    mysql游标存储过程例子

    根据提供的文件信息,本文将详细解释一个MySQL存储过程的例子,其中包含了游标的使用。这个存储过程主要用于处理一批数据,涉及到日期范围内的数据处理、异常处理等。下面将逐一解析存储过程中涉及的重要知识点。 #...

    mysql 多个游标依次执行

    mysql存储过程 多个游标循环(依次执行,非嵌套循环)REPEAT循环。有需要的可自行下载。

    Mysql数据库游标的使用

    MySql存储过程,游标的使用方法,速度极快!

    mysql存储过程_游标_项目练习

    在本项目实践中,我们将深入学习和运用MySQL的存储过程,同时结合游标这一重要工具进行实战操作。 首先,让我们了解什么是存储过程。存储过程是由用户定义的一系列SQL语句的集合,这些语句可以包含数据查询、数据...

    mysql动态游标学习(mysql存储过程游标)

    MySQL中的动态游标是数据库处理过程中非常有用的一个特性,它允许在存储过程中逐行处理查询结果。在本示例中,我们将深入探讨如何在MySQL中使用动态游标,特别是结合存储过程来实现这一功能。 首先,创建了一个名为...

    Oracle存储过程游标详解

    "Oracle存储过程游标详解" Oracle 存储过程游标是指在 Oracle 数据库中使用游标来实现对结果集的处理和操作。游标可以分为静态游标和REF游标两种类型。静态游标是指结果集已经确实(静态定义)的游标,可以进一步...

    mysql函数、存储过程、触发器、游标.doc

    MySQL是世界上最流行的开源关系型数据库管理系统之一,它包含多种功能,如函数、存储过程、触发器和游标,这些功能极大地增强了数据库管理的灵活性和效率。以下是对这些概念的详细解释: 1. **MySQL函数**:MySQL...

    详解Mysql 游标的用法及其作用

    [mysql游标的用法及作用] 例子: 当前有三张表A、B、C其中A和B是一对多关系,B和C是一对多关系,现在需要将B中A表的主键存到C中; 常规思路就是将B中查询出来然后通过一个update语句来更新C表就可以了,但是B表中有...

    Mysql存储过程循环内嵌套使用游标示例代码

    在MySQL中,存储过程是一种预编译的SQL语句集合,可以用于执行复杂的数据库操作,包括循环和游标的使用。游标允许我们逐行处理查询结果,这对于迭代数据进行处理非常有用。本示例中,我们将探讨如何在存储过程中循环...

    MySQL存储过程中游标循环的跳出和继续操作示例

    本篇文章将详细讨论在MySQL存储过程中如何使用游标循环,并特别关注如何进行跳出和继续操作。 首先,游标循环通常有三种基本形式:`LOOP`、`REPEAT`和`WHILE`。每种循环结构都有其特定的语法和用途,但核心思想都是...

Global site tag (gtag.js) - Google Analytics