今日用MYSQL存储过程中使用临时表报错,折腾了好久才发现临时表中字段类型不可为 enum类型,否则存储过程执行后报内存错误,mysql进程被中止! 跟在MYSQL命令行下登录后未先选择数据库就创建过程一样,Crash.
源码如下:
Delimiter //
Drop Procedure IF Exists Proc_test//
Create PROCEDURE Proc_test(in var_t varchar(2))
COMMENT '测试用'
proc:
Begin
Declare var_TExists boolean default false;
Declare error boolean default false;
Declare Continue Handler for sqlexception Set error=TRUE;
Create Temporary Table Tmp_T1(tt enum('1','2','3'));
if error then
Select '临时表建立不成功!' as State;
leave proc;
End if;
set var_TExists=true;
insert into Tmp_T1(tt) values(var_t);
if error then
drop Temporary table Tmp_T1;
Select '插入值错误!' as State;
leave proc;
End if;
select * from Tmp_T1;
if var_TExists then
drop Temporary table Tmp_T1;
End if;
End;//
delimiter ;
其实只要将 建临时表的字段类型 enum('1','2','3')) 改为 其它类型就不会出错!;