游标

122 阅读1分钟

概念

游标是个重要的概念,它提供了一种灵活的操作方式,可以让我们从数据结果集中每次提取一条数据记录进行操作。游标让 SQL 这种面向集合的语言有了面向过程开发的能力。

使用方式

  1. 定义游标
DECLARE cursor_name CURSOR FOR select_statement

# 示例
DECLARE cur_hero CURSOR FOR 
  SELECT hp_max FROM heros;
  1. 打开游标
OPEN cursor_name
  1. 从游标中获取数据
FETCH cursor_name INTO var_name ...

使用 cursor_name 这个游标来读取当前行,并且将数据保存到 var_name 这个变量中,游标指针指到下一行。如果游标读取的数据行有多个列名,则在 INTO 关键字后面赋值给多个变量名即可。

  1. 关闭游标
CLOSE cursor_name
  1. 释放游标
DEALLOCATE cursor_namec 

问题

使用游标可以更灵活,但同时也会带来一些性能问题,比如在使用游标的过程中,会对数据行进行加锁,这样在业务并发量大的时候,不仅会影响业务之间的效率,还会消耗系统资源,造成内存不足,这是因为游标是在内存中进行的处理。一般在业务程序中处理。


此文章为4月Day10学习笔记,内容来源于极客时间《SQL必知必会》