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
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
我把
创建临时表放到前面就语法报错,放到后面就通过了
create temporary table tmp_test
( s1 varchar(50) null,
s2 varchar(50) null
);