请教一个关于mysql存储过程的问题!!
直接看代码:
#一个可以指定取出几条语句的存储过程
delimiter $$
drop procedure if EXISTS LimitNum $$
create procedure LimitNum( in p_start int,in p_end int,in table_name varchar(255) )
begin
set @tmp_sql = concat( 'select * from ',table_name,' limit ?,?' );
prepare ycl from @tmp_sql;
set @pb = p_start;
set @pe = p_end;
execute ycl using @pb,@pe;
deallocate prepare ycl;
end $$
delimiter ;
call LimitNum(1,5,'x');
但是这里有个问题,如下:
set @tmp_sql = concat( 'select * from ',table_name,' limit ?,?' );
这个更改为:
declare tmp_sql varchar(255);
set tem_sql = concat( 'select * from ',table_name,' limit ?,?' );
再执行就会报错, declare 为定义局部变量 ,这样做的时候就会报错,请问为什么呀???