做笔记.记录生活中的点滴!

MYSQL存储过程中使用临时表(错误:内存不可读)

2007-05-17 15:18:22 / 个人分类:编程技术

今日用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')) 改为 其它类型就不会出错!;


TAG: MYSQL 临时表 内存出错 编程技术

我来说两句

-5 -3 -1 - +1 +3 +5

Open Toolbar