可不可以将返回的结果集存到变量,用游标的话会不会低效  没理解这句话这是三个delete语句在存储过程中根据输入时间参数组装成三个sql语句动态执行即可

解决方案 »

  1.   

    DELETE o FROM eve_operation o inner join eve e on o.eve_id=e.eve_id
    where e.create_time BETWEEN '2014-11-10 00:00:00' AND '2014-11-12 00:00:00'
      

  2.   

    作为参数传递的话还要定义吗?像这样对吗?
    CREATE DEFINER = CURRENT_USER PROCEDURE `NewProc`(IN `eve_start_createtime` datetime,IN `eve_end_createtime` datetime)
    BEGIN
    #Routine body goes here...
    set @param1 = eve_start_createtime;
    set @param2 = eve_end_createtime;
    set @sel = 'DELETE o FROM eve_operation o inner join eve e on o.eve_id=e.eve_id where 
    e.create_time BETWEEN';
    set @sel_2 = AND;
    set @sentence = concat(@sel,@param1,@sel_2,@param2);
    prepare stmt from @sentence;
    execute stmt;
    deallocate prepare stmt;
    END;;call NewProc('2014-11-10 00:00:00','2014-11-12 00:00:00')可以再拼接几条语句执行吗,直接跟在execute后面吗?
      

  3.   

    参数:IN `eve_start_createtime` datetime,IN `eve_end_createtime` datetime
    存储过程:BEGIN
    set @param1 = eve_start_createtime;
    set @param2 = eve_end_createtime;
    set @sel = 'SELECT t_eve.c_eve_id FROM t_eve where 
    e.create_time BETWEEN ';
    set @sel_2 = ' AND ';
    set @sentence = concat(@sel,@param1,@sel_2,@param2);
    prepare stmt from @sentence;
    execute stmt;
    deallocate prepare stmt;
    END
    输入:call eve_del(DATE(20141110),DATE(20141113))
    错误信息:[Err] 1064 - You have an error in your SQL syntax; 
    check the manual that corresponds to your MySQL server version for the right syntax
     to use near '00:00:00 AND 2014-11-13 00:00:00' at line 2
      

  4.   

        set @sentence = concat(@sel,'\'',@param1,'\'',@sel_2,'\'',@param2,'\'');