MySQL游标和控制结构代码学习
2014-04-21 22:13
309 查看
-- Procedure to find the orderid with the largest amount -- could be done with max,but just to illustrate stored procedure principles -- Database movies(20140420) DELIMITER // CREATE PROCEDURE largest_order(OUT largest_id INT) BEGIN DECLARE this_id INT; DECLARE this_amount FLOAT; DECLARE 1_amount FLOAT DEFAULT 0.0; DECLARE 1_id INT; DECLARE done INT DEFAULT 0; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; DECLARE c1 CURSOR FOR SELECT tag_id,kind_id FROM tmp_tags; OPEN c1; REPEAT FETCH c1 INTO this_id,this_amount; IF NOT done THEN IF this_amount > 1_amount THEN SET 1_amount = this_amount; SET 1_id = this_id; END IF; END IF; UNTIL DONE END REPEAT; CLOSE c1; SET largest_id = 1_id; END // DELIMITER ;
在MySQL控制台运行上述代码,出现报错信息:
ERROR 1338 (42000): Cursor declaration after handler declaration
尝试下面的方法
cursor的声明放在handler前面
SQL代码变为
-- Procedure to find the orderid with the largest amount -- could be done with max,but just to illustrate stored procedure principles -- Database movies(20140420) DELIMITER // CREATE PROCEDURE largest_order(OUT largest_id INT) BEGIN DECLARE this_id INT; DECLARE this_amount FLOAT; DECLARE 1_amount FLOAT DEFAULT 0.0; DECLARE 1_id INT; DECLARE done INT DEFAULT 0; DECLARE c1 CURSOR FOR SELECT tag_id,kind_id FROM tmp_tags; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; OPEN c1; REPEAT FETCH c1 INTO this_id,this_amount; IF NOT done THEN IF this_amount > 1_amount THEN SET 1_amount = this_amount; SET 1_id = this_id; END IF; END IF; UNTIL DONE END REPEAT; CLOSE c1; SET largest_id = 1_id; END // DELIMITER ;改成上面的代码之后,可以运行。
执行上述SQL语句之后,在执行下面的语句
CALL largest_order(@l);
SELECT @l;
执行结果是
相关文章推荐
- 代码大全学习-20-不常见的控制结构(Unusual Control Structures)
- python学习—Day27—mysql游标、连接池、表结构
- mysql游标处理复杂逻辑,分支结构代码示例
- 代码大全第二版读书笔记 第四部分-语句 十七、不常见的控制结构
- linux内核完全注释---学习札记--linux内核源代码目录结构
- scala学习之控制结构
- Caffe学习笔记1-安装以及代码结构
- js面向对象学习笔记之七(函数 与 基础控制结构)
- openHevc学习笔记:工程代码基本结构
- Scala学习(二)--- 控制结构和函数
- 代码大全学习总结——一般控制问题
- mybatis学习笔记(六)使用generator生成mybatis基础配置代码和目录结构
- 手把手教你mysql(十五)游标变量流程控制
- Python查询Mysql时返回字典结构的代码
- MySQL体系结构以及各种文件类型学习汇总
- Perl 学习笔记-高级控制结构
- 循环控制结构程序04 - 零基础入门学习C语言19
- RT-Thread 学习笔记(二)---配置github代码版本控制工具
- mysql性能优化学习笔记(5)数据库结构优化
- JAVA学习第三弹——Java代码语句的执行结构