带limit和一个输出参数的存储过程如下:
功能:往表runtimestat 中插入由limit指定行的数据DELIMITER //
DROP PROCEDURE IF EXISTS p_insertruntimerp //
CREATE  PROCEDURE p_insertruntimerp( 
IN runtimestat VARCHAR(64), 
IN runtime VARCHAR(64), 
IN processlib VARCHAR(64), 
IN rowbeg INT,
IN rowcount INT,
INOUT nret INT
)
BEGIN
DECLARE qweqwe INT;
START TRANSACTION;
SET qweqwe = -1;
SET @insertnosql = CONCAT('INSERT INTO ', runtimestat ,' (MID, TIME, software_type, run_time)
SELECT softrt.mid AS smid, softrt.time AS stime, prolib.type AS pid, 
softrt.run_time AS sruntime  
FROM ', runtime ,' softrt JOIN ', 
processlib,' prolib ON prolib.process_name = softrt.process_name 
LIMIT ', rowbeg, rowcount,' ;');
PREPARE insetnosql_stmt FROM @insertnosql;
EXECUTE insetnosql_stmt;
SET qweqwe = ROW_COUNT();
IF qweqwe < 0 THEN
ROLLBACK;
ELSE
nret = qweqwe ;
END IF;
DEALLOCATE PREPARE insetnosql_stmt;
COMMIT;
END //
DELIMITER ;调用如下:
CALL p_insertruntimerp('software_runtime_stat_2011_08','software_runtime_2011_08','process_lib', 4, 100000, @outValue)
第一次执行语句SELECT @outValue;时可以得到一个正确的值,
当表中数据增加时,每次执行语句SELECT @outValue;得到的值在增长,
但当数据再减少时,执行语句SELECT @outValue;得到的值还是以前的大值,这是为什么?
我该如何清空变量qweqwe以前的值?
我要的是每次当前的值,该怎么做?
谢谢!