Mysql 存储过程 游标中使用变量的有关问题
Mysql 存储过程 游标中使用变量的问题
最近学习存储过程,我想在其中使用游标并在游标中加入变量,我知道我下面的写法不对,请好心人帮忙看下
------解决方案--------------------
declare directorInfoCur cursor for select film.filmName, film.revenue from film where film.directorName like concat('%',name,'/%');
------解决方案--------------------
declare directorInfoCur cursor for select film.filmName, film.revenue from film where film.directorName like concat('%',name,'/%');
------解决方案--------------------
没有用的,MySQL游标是不允许为动态的,而且你的查询条件为变量,导致整个游标成为动态SQL....
而MySQL游标是不支持动态游标的
推荐:
淘宝和阿里巴巴去Oracle化事件 引发数据库技术人员大讨论
MySQL数据库开源软件版本 生产环境GA版本如何选择
------解决方案--------------------
不能动态就把结果集放入有自增字段的临时表里
然后用自增字段循环处理就可以了
最近学习存储过程,我想在其中使用游标并在游标中加入变量,我知道我下面的写法不对,请好心人帮忙看下
- SQL code
create procedure getFilmInfo (in name varchar(100)) begin DECLARE done INT DEFAULT 0; declare filmName varchar(100); declare revenue double; declare directorInfoCur cursor for select film.filmName, film.revenue from film where film.directorName like '%name/%'; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; open directorInfoCur; repeat fetch directorInfoCur into filmName, revenue; if not done then select filmName, revenue; end if; until done end repeat; close directorInfoCur; end
------解决方案--------------------
declare directorInfoCur cursor for select film.filmName, film.revenue from film where film.directorName like concat('%',name,'/%');
------解决方案--------------------
declare directorInfoCur cursor for select film.filmName, film.revenue from film where film.directorName like concat('%',name,'/%');
------解决方案--------------------
没有用的,MySQL游标是不允许为动态的,而且你的查询条件为变量,导致整个游标成为动态SQL....
而MySQL游标是不支持动态游标的
推荐:
淘宝和阿里巴巴去Oracle化事件 引发数据库技术人员大讨论
MySQL数据库开源软件版本 生产环境GA版本如何选择
------解决方案--------------------
不能动态就把结果集放入有自增字段的临时表里
然后用自增字段循环处理就可以了