mysql之光标cursor【整理】
来源:互联网 发布:淘宝客链接转化api 编辑:程序博客网 时间:2024/06/16 17:55
光标
MYSQL里叫光标,SQLSERVER里叫游标,实际上一样的
查询语句可能查询出多条记录,在存储过程和函数中使用光标来逐条读取查询结果集中的记录。
光标的使用包括声明光标、打开光标、使用光标和关闭光标。光标必须声明在处理程序之前,并且声明在变量和条件之后。
1.声明光标
MySQL中使用DECLARE关键字来声明光标。其语法的基本形式如下:
其中,cursor_name参数表示光标的名称;select_statement参数表示SELECT语句的内容,返回一个用于创建光标的结果集
下面声明一个名为cur_employee的光标。代码如下:
上面的示例中,光标的名称为cur_employee;SELECT语句部分是从employee表中查询出name和age字段的值。
2.打开光标
MySQL中使用OPEN关键字来打开光标。其语法的基本形式如下:
其中,cursor_name参数表示光标的名称。
下面打开一个名为cur_employee的光标,代码如下:
3.使用光标
MySQL中使用FETCH关键字来使用光标。其语法的基本形式如下:
其中,cursor_name参数表示光标的名称;var_name参数表示将光标中的SELECT语句查询出来的信息存入该参数中。var_name必须在声明光标之前就定义好。
下面使用一个名为cur_employee的光标。将查询出来的数据存入emp_name和emp_age这两个变量中,代码如下:
上面的示例中,将光标cur_employee中SELECT语句查询出来的信息存入emp_name和emp_age中。emp_name和emp_age必须在前面已经定义。
4.关闭光标
MySQL中使用CLOSE关键字来关闭光标。其语法的基本形式如下:
其中,cursor_name参数表示光标的名称。
【示例14-11】 下面关闭一个名为cur_employee的光标。代码如下:
上面的示例中,关闭了这个名称为cur_employee的光标。关闭之后就不能使用FETCH来使用光标了。
实例一:loop循环游标:注意:MYSQL中,光标只能在存储过程和函数中使用!!
DELIMITER $$
DROP PROCEDURE IF EXITS cursor_example$$
CREATE PROCEDURE cursor_example()
READS SQL DATA
BEGIN
DECLARE l_employee_id INT;
DECLARE l_salary NUMERIC(8,2);
DECLARE l_department_id INT;
DECLARE done INT DEFAULT 0;
DECLARE cur1 CURSOR FOR SELECT employee_id, salary, department_id FROM employees;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
OPEN cur1;
emp_loop: LOOP
FETCH cur1 INTO l_employee_id, l_salary, l_department_id;
IF done=1 THEN
LEAVE emp_loop;
END IF;
END LOOP emp_loop;
CLOSE cur1;
END$$
DELIMITER ;
实例二:repeat循环游标:
/*创建过程*/
DELIMITER //
DROP PROCEDURE IF EXISTS test //
CREATE PROCEDURE test()
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a VARCHAR(200) DEFAULT '';
DECLARE c VARCHAR(200) DEFAULT '';
DECLARE mycursor CURSOR FOR SELECT fusername FROM uchome_friend;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
OPEN mycursor;
REPEAT
FETCH mycursor INTO a;
IF NOT done THEN
SET c=CONCAT(c,a);/*字符串相加*/
END IF;
UNTIL done END REPEAT;
CLOSE mycursor;
SELECT c;
END //
DELIMITER ;
delimiter //
一般情况下MYSQL以;结尾表示确认输入并执行语句,但在存储过程中;不是表示结束,因此可以用该命令将;号改为//表示确认输入并执行。
1、 无返回结果语句,如:INSERT,UPDATE,DROP, DELETE等
2、 select语句返回单行变量并可传给本地变量(select ..into)
3、 返回多行结果集的select语句,并可使用MySQL游标循环处理
- mysql之光标cursor【整理】
- 【css属性之cursor】 光标自定义
- oracle cursor-光标
- 光标属性cursor
- 光标类型 CSS cursor
- VC++修改程序光标Cursor
- CSS光标(cursor)属性一览表
- CSS--cursor光标属性
- Android EditText光标Cursor设置
- mysql cursor
- 鼠标光标样式(cursor style)大全
- oracle学习大全--光标设计(Cursor)
- CSS中的cursor属性(光标样式)
- PLSQL CURSOR光标循环用法
- Cursor游标(光标)的使用
- Css cursor鼠标指针鼠标光标样式
- Chart控件使能光标(Cursor)
- 计算QPlaintTextEdit当前光标(cursor)的行号
- 1025. 反转链表 (25)
- Java中包装类的一些注意点
- 1026. 程序运行时间(15)
- Spring3.2.4 + Mybatis3.1.1环境搭建
- 牛顿法与拟牛顿法学习笔记(一)牛顿法
- mysql之光标cursor【整理】
- AutoCompleteTextView自动提示联系人信息
- 牛顿法与拟牛顿法学习笔记(二)拟牛顿条件
- 个人主页
- IOS开发中常用的知识点汇总
- 牛顿法与拟牛顿法学习笔记(三)DFP 算法
- 【C语言】实现strcat函数
- 牛顿法与拟牛顿法学习笔记(四)BFGS 算法
- 牛顿法与拟牛顿法学习笔记(五)L-BFGS 算法