日期:2014-05-16  浏览次数:20797 次

mysql存储过程中truncate失效
SQL code

delimiter //
CREATE PROCEDURE sp_power()
begin
    declare l_id bigint(20);
    declare l_power smallint(6);
    declare no_more_device int default 0;
    
    declare power_csr CURSOR FOR 
        SELECT dev_id,power_stat FROM device;
        
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_device=1; 
    SET no_more_device = 0;
    
    create table if not exists stat_power(dev_id bigint(20),dev_power smallint(6));
    truncate table stat_power;
    
    open power_csr;
    dev_loop:repeat
        fetch power_csr into l_id,l_power;
        if no_more_device then 
            leave dev_loop;
        end if;
        
        if l_power < 11 then
            insert into stat_power values(l_id,l_power);
        end if;
    until no_more_device
    end repeat dev_loop;
    close power_csr;
    set no_more_device = 0;
end //
delimiter ;



以上是我的存储过程,但每次调用时stat_power表并没有清空,而是在原来的表里增加了这次执行结果的内容
请问应该怎么解决?

------解决方案--------------------
有无提示

truncate table stat_power;
select * from stat_power;
什么结果
------解决方案--------------------
数据应该是清除了。估计是你后面的程序问题。
建议给出你的测试用例,想办法让别人可以在自己的机器上模拟你的问题。


建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html