MySQL必知必会 学习笔记 第二十四章 使用游标

分手后的思念是犯贱 2022-12-30 01:27 210阅读 0赞

MySQL 5增加了对游标的支持。

游标是存储在MySQL服务器上的数据库查询,它不是SELECT语句,而是被该语句检索出来的结果集,存储了游标后,就能在检索出来的行中前进或后退一行或多行。

不同于多数DBMS,MySQL游标只能用于存储过程和函数。

使用游标步骤:
1.使用前必须先声明(定义)它。这个过程实际上没有检索数据,它只是定义要使用的SELECT语句。
2.声明后,必须打开游标以供使用。这个过程使用前面定义的SELECT语句把数据实际检索出来。
3.根据需要取出(检索)各行。
4.使用结束时,关闭游标。

声明游标后,可频繁地开关游标。游标打开后,可频繁地进行取操作。

创建游标:

  1. CREATE PROCEDURE procedureName()
  2. BEGIN
  3. DECLARE cursorName CURSOR
  4. FOR
  5. SELECT语句
  6. END;

存储过程处理完成后,游标就消失了。

打开游标:

  1. OPEN cursorName;

在执行OPEN语句时执行查询,并存储检索出的数据以供浏览和滚动。

关闭游标:

  1. CLOSE cursorName;

CLOSE语句释放游标使用的所有内部内存和资源。如果想再打开游标,再调用OPEN即可。

如果不明确关闭游标,到达END语句时会自动关闭它。

游标被打开后,可使用FETCH语句分别访问它检索出的每一行,它还会向前移动游标的内部行指针,使下一条FETCH语句检索下一行:

  1. CREATE PROCEDURE procedureName()
  2. BEGIN
  3. DECLARE o INT;
  4. DECLARE cursorName CURSOR
  5. FOR
  6. SELECT order_num FROM orders;
  7. OPEN cursorName;
  8. FETCH cursorName INTO o;
  9. CLOSE cursorName;
  10. END;

循环检索数据,从第一行到最后一行:

  1. CREATE PROCEDURE procedureName()
  2. BEGIN
  3. DECLARE done BOOLEAN DEFAULT 0;
  4. DECLARE o INT;
  5. DECLARE cursorName CURSOR
  6. FOR
  7. SELECT order_num FROM orders;
  8. DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; -- SQLSTATE 02000’表示未找到,FETCH最后一条数据之后的数据时会出现
  9. OPEN cursorName;
  10. REPEAT
  11. FETCH cursorName INTO o;
  12. UNTIL done END REPEAT;
  13. CLOSE cursorName;
  14. END;

DECLARE定义的局部变量必须在游标或CONTINUE HANDLER之前定义,CONTINUE HANDLER必须在游标之后定义。

除了REPEAT,MySQL还支持循环语句,它会循环直到使用LEAVE语句手动退出。通常REPEAT语句的语法更适合对游标操作。

存储过程中可以创建表,也能调用另一个存储过程,如果调用另一个存储过程时需要参数,参数前不需要加@:

  1. CREATE PROCEDURE procedureName1()
  2. BEGIN
  3. DECLARE o INT;
  4. CALL procedureName2(o); -- 参数前不需要加@
  5. END;

发表评论

表情:
评论列表 (有 0 条评论,210人围观)

还没有评论,来说两句吧...

相关阅读