游标无法通过mysql存储过程中的prepare语句执行?

时间:2015-12-30 06:04:49

标签: mysql sql

我的代码是:

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不在这里声明?请通知我我的问题

1 个答案:

答案 0 :(得分:1)

摘录:

  

...游标不能用于使用PREPARE和EXECUTE准备和执行的动态语句。在游标创建时检查游标的语句,因此该语句不能是动态的。

参考:http://dev.mysql.com/doc/refman/5.7/en/sql-syntax-prepared-statements.html

请注意,该文档包含准备好的语句中允许的SQL语法部分,并且不包含' DECLARE'也不是CURSOR'出现在允许的语法列表中。