根据系统时间,来判断不同的月份,然后将日志写到不同月份表中:如:         create procedure  aaaa()
          begin    
               DECLARE var_month varchar(20);               DECLARE varyearmonth varchar(20);
               select month(current_date),date_format(current_date,'%Y%c') into var_month ,varyearmonth;
                                   select @var_month,@varyearmonth;                 IF  var_month=1 THEN
  create table logserver.datalog_varyearmonth select * from hiddenmenu.datalog where 1<>1;        ELSEIF  var_month=2 THEN                  create table logserver.datalog_varyearmonth select * from hiddenmenu.datalog where 1<>1;               
                 
                ELSE                   create table logserver.datalog_ select * from hiddenmenu.datalog where 1<>1;        END IF;             
                  
          end;
     现在是, var_month,varyearmonth 值为空,有那为高手请教下什么问题或者有没有更好的方法,谢谢!;           

解决方案 »

  1.   

    select @var_month,@varyearmonth;  ->
    select var_month,varyearmonth;  
    看看结果如何
      

  2.   

         
       谢谢楼上兄弟,是取到值了,但是:
           create table logserver.datalog_varyearmonth select * from hiddenmenu.datalog where 1<>1;      这里应该如何处理:  logserver.datalog_varyearmonth  --> logserver.datalog_20111.
     
       谢谢
      

  3.   

    mysql> show tables;
    +------------------+
    | Tables_in_asdqqq |
    +------------------+
    | tmplistitem      |
    +------------------+
    1 row in set (0.00 sec)mysql> delimiter $$
    mysql> create procedure aaaa()
        ->   begin
        ->   DECLARE var_month varchar(20);
        ->   DECLARE varyearmonth varchar(20);
        ->   select month(current_date),date_format(current_date,'%Y%c') into var_mo
    nth ,varyearmonth;
        ->  # select @var_month,@varyearmonth;
        ->   IF var_month=1 THEN
        -> set @a=concat('create table ','`',varyearmonth,'`',' select * from tmplis
    titem where 1<>1');
        -> prepare stmt from @a;
        -> EXECUTE stmt;
        -> deallocate prepare stmt;
        -> #create table varyearmonth select * from tmplistitem where 1<>1;
        -> ELSEIF var_month=2 THEN
        -> set @a=concat('create table ','`',varyearmonth,'`',' select * from tmplis
    titem where 1<>1');
        -> prepare stmt from @a;
        -> EXECUTE stmt;
        -> deallocate prepare stmt;
        -> #  create table varyearmonth select * from tmplistitem where 1<>1;
        ->   ELSE
        ->   create table datalog_3 select * from tmplistitem where 1<>1;
        -> END IF;
        ->   end;$$
    Query OK, 0 rows affected (0.00 sec)
    mysql> delimiter ;
    mysql> select current_date();
    +----------------+
    | current_date() |
    +----------------+
    | 2011-01-05     |
    +----------------+
    1 row in set (0.00 sec)mysql> call aaaa();
    Query OK, 0 rows affected (0.11 sec)mysql> show tables;
    +------------------+
    | Tables_in_asdqqq |
    +------------------+
    | 20111            |
    | tmplistitem      |
    +------------------+
    2 rows in set (0.00 sec)mysql> select current_date();
    +----------------+
    | current_date() |
    +----------------+
    | 2011-02-05     |
    +----------------+
    1 row in set (0.47 sec)mysql> call aaaa();
    Query OK, 0 rows affected (0.31 sec)mysql> show tables;
    +------------------+
    | Tables_in_asdqqq |
    +------------------+
    | 20111            |
    | 20112            |
    | tmplistitem      |
    +------------------+
    3 rows in set (0.28 sec)
      

  4.   

    set @asql=concat('create table logserver.datalog_',varyearmonth,' select * from hiddenmenu.datalog where 1<>1');
    prepare stml from @asql;
    execute stml;