目录

    🍀一、什么是光标 

    🍀二、声明光标

    🍀三、打开光标

    🍀四、使用光标

    🍀五、关闭光标 


一、什么是光标 

    查询语句可能查询出多条记录,在存储过程和函数中使用光标来逐条读取查询结果集中的记录。有些书上将光标称为游标。光标的使用包括声明光标、打开光标、使用光标和关闭光标。光标必须声明在处理程序之前,并且声明在变量和条件之后。

 

二、声明光标

    在MySQL中,可以使用DECLARE关键字来声明光标,其基本语法如下:

DECLARE cursor_name CURSOR         
FOR select_statement;                  
  • 参数cursor_name表示光标的名称;
  • 参数select_statement表示SELECT语句的内容。

 

三、打开光标

     在MySQL中,使用关键字OPEN来打开光标,其基本语法如下:

OPEN cursor_name;
  • 参数cursor_name表示光标的名称。

 

四、使用光标

    在MySQL中,使用关键字FETCH来使用光标,其基本语法如下: 

FETCH cursor_name
      INTO var_name[,var_name…];
  • 参数cursor_name表示光标的名称;
  • 参数var_name表示将光标中的SELECT语句查询出来的信息存入该参数中。var_name必须在声明光标之前就定义好。 

    示例:在下面student表与class表创建cur_student光标,输入学生学号,查询学生姓名和所在班级

delimiter $$
create procedure proc_query_student(in sid int,out cname varchar(64) ,out cid int)
begin
    declare temp_name varchar(64);
    declare temp_cid int;
    #声明光标
    declare cur_student cursor for select name ,class_id from student where id=sid;
    open cur_student;   #打开光标
    fetch cur_student into temp_name,temp_cid;  #使用光标
    select temp_name ,temp_cid;  #打印从光标中获得的值
    close cur_student;  #关闭光标
    set cname=temp_name,cid=temp_cid;
end;
$$

delimiter ;

    调用存储过程。这里的查询结果只有一条,当结果为多个时可以配合流程控制的if语句实现循环输出。

 

五、关闭光标 

    在MySQL中,使用关键字CLOSE来关闭光标,其基本语法如下:

CLOSE cursor_name;
  • 参数cursor_name表示光标的名称。

🍀🍀🍀🍀🍀🍀🍀🍀

更多推荐

【MySQL存储过程】光标的使用详解