DELIMITER $$
CREATE PROCEDURE `delvalid`(in valid char(1))
BEGIN
DECLARE pos int;
DECLARE sqlStr varchar(500);
DECLARE tabStr varchar(500);
DECLARE sTabStr varchar(128);
SET @tabStr = 't_customer_service,t_tubearea,t_bo_sales,t_bo_sales_relevance,t_bo_accounts';
main:LOOP
SET @sTabStr = SUBSTRING_INDEX(@tabStr, ',', 1);
SET @sqlStr = CONCAT('DELETE FROM ',@sTabStr,' WHERE valid=',valid,';');
PREPARE sqlstmt from @sqlStr;
EXECUTE sqlstmt;
DEALLOCATE PREPARE sqlstmt;
SET @pos = LOCATE(',',@tabStr);
IF @pos = 0 THEN LEAVE main; END IF;
SET @tabStr = SUBSTR(@tabStr,@pos+1);
END LOOP main;
END$$
注意:delvalid 自定义存储过程名字 valid 为参数 @tabStr 的值为要删除的表名
当修改 @tabStr的值后 要 DROP PROCEDURE delvalid; 删除存储过程 再重新生成存储过程
call delvalid(‘0’) 是执行存储过程 参数传递valid =0;