>  기사  >  데이터 베이스  >  MySQL의 커서란 무엇입니까? 커서를 사용하는 방법?

MySQL의 커서란 무엇입니까? 커서를 사용하는 방법?

青灯夜游
青灯夜游앞으로
2021-09-08 19:13:133297검색

커서란 무엇인가요? 커서를 사용하는 방법? 다음 기사에서는 MySQL의 커서를 이해하고 커서를 사용하는 단계를 소개합니다. 도움이 되기를 바랍니다.

MySQL의 커서란 무엇입니까? 커서를 사용하는 방법?

커서가 무엇인지 이해하려면 먼저 저장 프로시저를 이해해야 합니다. 저장 프로시저는 미리 컴파일되어 데이터베이스에 저장된 SQL 문이며, IF문, 설정 변수, 루프 등. 예를 들어 다음 문은 저장 프로시저를 만드는 데 사용됩니다. [관련 권장사항: mysql 비디오 튜토리얼IF语句、设置变量、循环等,比如下面语句用于创建一个存储过程。【相关推荐:mysql视频教程

delimiter $$
create procedure select_all() begin select * from user; end;$$

调用存储过程。

mysql>  call select_all;$$

存储过程可以减少数据库和应用服务器之间的传输,对提供数据库处理效率还是有好处的,而游标(Cursor)有的地方又叫光标,可以在存储过程中,对结果集进行循环处理,但是目前,MySQL只允许我们从SELECT语句从头到尾获取结果集中的每一行,无法从最后一行获取到第一行,也无法直接跳转到结果集中的指定行。

使用游标有以下几个步骤

1、游标定义

DECLARE cursor_name CURSOR FOR select_statement

2、打开游标

OPEN cursor_name;

3、获取游标中的数据

FETCH cursor_name INTO var_name [, var_name]...

4、关闭光标

CLOSE cursor_name;

5、释放光标

DEALLOCATE cursor_name;

实例

创建表

CREATE TABLE cursor_table
(id INT ,name VARCHAR(10),age INT
)ENGINE=innoDB DEFAULT CHARSET=utf8;
insert into cursor_table values(1, '张三', 500);
insert into cursor_table values(2, '李四', 200);
insert into cursor_table values(3, '王五', 100);
insert into cursor_table values(4, '老六', 20);


create table cursor_table_user(name varchar(10));

下面我们通过游标,遍历cursor_table表,把年龄大于30的人名存放到cursor_table_user

drop procedure getTotal;
delete from cursor_table_user ;

CREATE  PROCEDURE getTotal()
BEGIN  
   DECLARE total INT; 
   DECLARE sid INT;  
   DECLARE sname VARCHAR(10);  
   DECLARE sage INT;  
   DECLARE done INT DEFAULT false;  
   DECLARE cur CURSOR FOR SELECT id,name,age from cursor_table where age>30;  
   DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = true;   
   SET total = 0;  
   OPEN cur;  
   FETCH cur INTO sid, sname, sage;  
   WHILE(NOT done) 
   DO  
       insert cursor_table_user values(sname);
       SET total = total + 1;  
       FETCH cur INTO sid, sname, sage;  
       
   END WHILE;  
   CLOSE cur;  
   SELECT total;  
END
call getTotal();

mysql> select * from cursor_table_user;
+--------+
| name   |
+--------+
| 张三   |
| 李四   |
| 王五   |
+--------+
3 rows in set (0.00 sec)

这段程序有一行非常重要,DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = true;  ,他表示如果游标或SELECT语句没有数据的时候,将done]

rrreee

통화 저장 프로세스.

rrreee
저장 프로시저는 데이터베이스와 애플리케이션 서버 간의 전송을 줄일 수 있으며 데이터베이스 처리 효율성을 향상시키는 데 좋습니다. 커서(Cursor)는 저장 중에 결과 집합을 반복할 수도 있습니다. 그러나 현재 MySQL에서는 SELECT 문의 처음부터 끝까지 결과 집합의 각 행만 얻을 수 있으며, 마지막 행에서 첫 번째 행을 얻을 수도 없습니다. 결과 집합의 지정된 행으로 직접 점프합니다.

커서를 사용하는 데는 여러 단계가 있습니다.

1. 커서 정의rrreee2. 커서를 엽니다

rrreee🎜3. 커서를 닫습니다🎜rrreee🎜5. Heading-1" >🎜Create table🎜rrreee🎜이제 커서를 사용하여cursor_table 테이블을 탐색하고 30세 이상의 사람들의 이름을 Cursor_table_user🎜rrreeerrreee🎜에 저장합니다. 이 프로그램에서 매우 중요한 라인인 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = true 는 커서나 SELECT 문에 데이터가 없으면 done의 값을 설정한다는 의미입니다. code> 변수를 true로 설정하여 루프를 종료합니다. 🎜🎜다음은 WHILE을 통해 순차적으로 순회하는 것입니다. 🎜🎜🎜원본 주소: https://juejin.cn/post/7003237966952792077🎜🎜🎜더 많은 프로그래밍 관련 지식을 원하시면 🎜프로그래밍 영상🎜을 방문해 주세요! ! 🎜

위 내용은 MySQL의 커서란 무엇입니까? 커서를 사용하는 방법?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 juejin.cn에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제