我的代码是:
CREATE DEFINER=`root`@`windows7test-pc` PROCEDURE `new_procedure`()
BEGIN
declare str varchar(4000);
set str='declare cur cursor for select *from student';
set @st=str;
prepare stmt from @st;
execute stmt;
DEALLOCATE PREPARE stmt;
open cur;//error 1324:undefined cursor...... why?
END
为什么cursur不在这里声明?请通知我我的问题
答案 0 :(得分:1)
摘录:
...游标不能用于使用PREPARE和EXECUTE准备和执行的动态语句。在游标创建时检查游标的语句,因此该语句不能是动态的。
参考:http://dev.mysql.com/doc/refman/5.7/en/sql-syntax-prepared-statements.html
请注意,该文档包含准备好的语句中允许的SQL语法部分,并且不包含' DECLARE
'也不是CURSOR
'出现在允许的语法列表中。