CREATE DEFINER=`root`@`localhost` PROCEDURE `p4`()
BEGIN
  declare done int default 0;
  declare a int;
  declare b varchar(20);
    create temporary table tmp_test
  ( s1 varchar(50) null,
    s2 varchar(50) null
  );
  declare cur1 cursor for select s1,s2 from db5.t2;
  declare continue handler for sqlstate '02000' set done = 1;
  open cur1;
   repeat
        fetch cur1 into a ,b;
        if(not done )then
               update t2 set s2 = '1';
        end if;
  until done end repeat;
  close cur1;
END以上 脚本语法不通过
但把创建临时表放到光标后面,语法检测就可以通过,请教原因CREATE DEFINER=`root`@`localhost` PROCEDURE `p4`()
BEGIN
  declare done int default 0;
  declare a int;
  declare b varchar(20);  declare cur1 cursor for select s1,s2 from db5.t2;
  declare continue handler for sqlstate '02000' set done = 1;
  open cur1;
   repeat
        fetch cur1 into a ,b;
        if(not done )then
               update t2 set s2 = '1';
        end if;
  until done end repeat;  close cur1;
  create temporary table tmp_test
  ( s1 varchar(50) null,
    s2 varchar(50) null
  );
END