BEGIN  
     -- 分类
     DECLARE v_categorie VARCHAR(20) DEFAULT ''; 
     -- 值 
     DECLARE v_value VARCHAR(20) DEFAULT '';  
        
        DROP TABLE IF EXISTS PresentationData_Tmp;  
        CREATE TEMPORARY TABLE PresentationData_Tmp(  
            categorie VARCHAR(20),  
            `value` VARCHAR(20),
            `condition` VARCHAR(20)
        )ENGINE=MyISAM DEFAULT CHARSET=gbk;  
      
        SET @tmpSql = CONCAT('INSERT INTO PresentationData_Tmp (`categorie`,`value`,`condition`)   
                              select date_format(t.MONITOR_TIME,\'%c-%d\') as `categorie`,format(t.VOLTAGE_DEVIATION_A,2) as `value` ,t.MONITOR_ID as `condition` from t_electric_quality_monitor t where t.VOLTAGE_DEVIATION_A <10');  
        PREPARE gatherData FROM @tmpSql;  
        EXECUTE gatherData;  
        DEALLOCATE PREPARE gatherData ;        SELECT `categorie`,`value` FROM PresentationData_Tmp where `condition` = '1' order by `categorie`;
        SELECT `categorie`,`value` FROM PresentationData_Tmp where `condition` = '2' order by `categorie`;
        TRUNCATE  PresentationData_Tmp;
        DROP TABLE PresentationData_Tmp;
 END
Procedure execution failed
1074 - Column length too big for column 'categorie' (max = 32767); use BLOB or TEXT instead执行这个存储过程 一次一次点运行没有错误,连续疯狂点击出现如上错误了,不知道错在哪里,哪位大神能解释下,感激不尽!!! mysql存储1074

解决方案 »

  1.   

    别用临时表BEGIN  
         -- 分类
         DECLARE v_categorie VARCHAR(20) DEFAULT ''; 
         -- 值 
         DECLARE v_value VARCHAR(20) DEFAULT '';  
              
            SELECT `categorie`,`value` FROM (select date_format(t.MONITOR_TIME,\'%c-%d\') as `categorie`,format(t.VOLTAGE_DEVIATION_A,2) as `value` ,t.MONITOR_ID as `condition` from t_electric_quality_monitor t where t.VOLTAGE_DEVIATION_A <10') where `condition` = '1' order by `categorie`;
            SELECT `categorie`,`value` FROM (select date_format(t.MONITOR_TIME,\'%c-%d\') as `categorie`,format(t.VOLTAGE_DEVIATION_A,2) as `value` ,t.MONITOR_ID as `condition` from t_electric_quality_monitor t where t.VOLTAGE_DEVIATION_A <10') where `condition` = '2' order by `categorie`;
     
     END