DROP PROCEDURE IF EXISTS info_bak;
CREATE PROCEDURE info_bak(IN talbeName VARCHAR(30), OUT retMsg VARCHAR(30))
BEGIN
DECLARE v_err INT DEFAULT 0;
DECLARE v_msg VARCHAR(30);
DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_err = 1;
DECLARE CONTINUE HANDLER FOR SQLWARNING SET v_err = 2;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET v_err = 3;
SET @sqlcmd = CONCAT(‘REPLACE INTO infobak SELECT * FROM ‘,talbeName,‘ ;‘);
PREPARE stmt FROM @sqlcmd;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
IF v_err = 1 THEN
SET v_msg = "Not Found";
ELSEIF v_err = 2 THEN
SET v_msg = "Warning";
ELSEIF v_err = 3 THEN
SET v_msg = "Error";
ELSE
SET v_msg = "OK";
END IF;
COMMIT;
SET retMsg = v_msg;
END;
CALL info_bak(‘info‘, @msg);
SELECT @msg;
?
原文:http://injavawetrust.iteye.com/blog/2278423