MySQL游标
来源:互联网 发布:淘宝柒牌官方旗舰店 编辑:程序博客网 时间:2024/05/16 14:46
MySQL中的游标仅在存储过程中被支持,只读且不可滚动,使用光标可以迭代每一行结果,并把结果提取到变量中以做进一步处理。
游标是在临时表上进行操作的,其语法如下所示:
DECLARE cursor_name CURSOR FOR select_statement
这个语句声明一个光标。也可以在子程序中定义多个光标,但是一个块中的每一个光标必须有唯一的名字。
SELECT语句不能有INTO子句。
OPEN cursor_name
这个语句打开先前声明的光标。
FETCH cursor_name INTO var_name [, var_name] ...
这个语句用指定的打开光标读取下一行(如果有下一行的话),并且前进光标指针。
CLOSE cursor_name
这个语句关闭先前打开的光标。
如果未被明确地关闭,光标在它被声明的复合语句的末尾被关闭。
例如:
CREATE PROCEDURE curdemo()
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM test.t1;
DECLARE cur2 CURSOR FOR SELECT i FROM test.t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO test.t3 VALUES (a,b);
ELSE
INSERT INTO test.t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
END
在MySQL中,不管是提前关闭游标,还是读完后关闭,其代价是一样的,都需要执行完SQL语句的代价;
此外,游标会导致额外的I/O开销,例如临时表大于tmp_table_size时,将会在磁盘上为游标创建临时表。
- Mysql 游标
- mysql 游标
- MySQL游标
- mysql 游标
- MySQL游标
- mysql游标
- mySQL游标
- mysql游标
- MySQL游标
- mysql游标
- MySQL游标
- MYSQL游标
- MySQL游标
- Mysql游标
- MySQL游标
- mysql 游标
- MySQL游标
- mysql--游标
- 文本编辑软件UltraEdit v16.20官方简/繁体中文版下载+注册码和破解方法
- 《深入Java虚拟机学习笔记》- 第19章 方法的调用与返回
- C#中WebBrowser的使用
- HBASE安装手册
- ARM 指令集>>跳转指令
- MySQL游标
- c# DataGridView中实现ComboBox可编辑的下拉框功能
- 【转】为什么去国企
- 输出100以内的所有质数--九九乘法表--作业
- Windows(ce)下,无需资源文件也可以创建Dialog
- offsetof
- ADO.NET对象之DataReader操作
- 让Java程序作为linux的Daemon后台运行 和 使用Java Service Wrapper将java程序作为linux服务并且开机自动启动
- 清华申请退学博士王垠作品:完全用Linux工作