mysql 刪表

USE sys; #數據庫名稱,過程存儲依賴於數據庫生效.
DROP PROCEDURE IF EXISTS Del_tables; #如果已有該存儲過程則刪除舊的
DELIMITER $$ #定義臨時分隔符
CREATE PROCEDURE Del_tables() #創建存儲過程
BEGIN #存儲過程開始
#定義變量名稱和類型
DECLARE db_name VARCHAR(20);
DECLARE table_name VARCHAR(20);
DECLARE table_pro CHAR(18);
DECLARE sql_text VARCHAR(3000);
DECLARE i INT;
DECLARE j VARCHAR(2);
#對變量進行賦值
SET db_name='sys';
SET table_name='';
SET table_pro = 'destfileinserver_';
SET sql_text='';
SET i=0;
SET i=0;
#通過遍歷,生成129張分表的前綴
WHILE i<=79 DO
IF i<10 THEN
SET j=CONCAT('0',i);
ELSE
SET j=LPAD(LCASE(HEX(i)),2,'0');
END IF;
#拼接分表名稱
-- SET table_name=CONCAT(j,table_pro);
SET table_name=CONCAT(table_pro,j);
#拼接刪除分表的SQL語句      
-- SET sql_text=CONCAT('DROP TABLE IF EXISTS ', db_name,'.',table_name,';');

SET sql_text=CONCAT('delete from ', db_name,'.',table_name,' where time between ', '"2018-01-01 00:00:00"', ' and ', '"2019-01-01 00:00:00"',';');
-- SET sql_text=CONCAT('create table ', db_name,'.',table_name,' (id int(20), time timestamp);');
#執行SQL語句  
SELECT sql_text;
SET @sql_text=sql_text;
PREPARE stmt FROM @sql_text;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
#準備進入下一輪循環
SET i=i+1;
#結束循環
END WHILE;
#存儲過程結束
END$$
#恢復分隔符
DELIMITER ;
#調用存儲過程並執行
CALL Del_tables();

https://blog.csdn.net/weixin_34128237/article/details/92387364

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章