Mysql 存储过程 游标中使用变量的问题
最近学习存储过程,我想在其中使用游标并在游标中加入变量,我知道我下面的写法不对,请好心人帮忙看下
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版本如何选择
------解决方案--------------------不能动态就把结果集放入有自增字段的临时表里
然后用自增字段循环处理就可以了