From b843a1704cfac9055c8c2006d6b66bb115a6dde7 Mon Sep 17 00:00:00 2001 From: Alan Knowles Date: Wed, 23 Sep 2015 18:10:23 +0800 Subject: [PATCH] mysql/mysql_change_charset.sql --- mysql/mysql_change_charset.sql | 59 ++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/mysql/mysql_change_charset.sql b/mysql/mysql_change_charset.sql index e69de29b..e0c9d89f 100644 --- a/mysql/mysql_change_charset.sql +++ b/mysql/mysql_change_charset.sql @@ -0,0 +1,59 @@ + + +DROP PROCEDURE IF EXISTS mysql_change_charset; + +delimiter $$ + + +CREATE PROCEDURE mysql_change_charset(mytb TEXT) + BEGIN + DECLARE mydb TEXT; + + SELECT database() INTO mydb; + + + SELECT + IF( + dbtb2='.', + CONCAT('ALTER TABLE ',dbtb1,' ENGINE=InnoDB'), + CONCAT('SELECT ''',dbtb1,' is Already InnoDB'' as \"No Need to Convert\"') + ) + INTO + @ConvertEngineSQL + + FROM ( + SELECT + CONCAT(A.db,'.',A.tb) dbtb1, + CONCAT(IFNULL(B.db,''),'.',IFNULL(B.tb,'')) dbtb2,engine + FROM + ( + SELECT + table_schema db,table_name tb,engine + FROM + information_schema.tables + WHERE + table_schema=mydb and table_name=mytb + ) A + LEFT JOIN + ( + SELECT + table_schema db,table_name tb + FROM + information_schema.tables + WHERE + table_schema=mydb and table_name=mytb AND engine='InnoDB' + ) B + USING + (db,tb) + ) AA; + + -- SELECT ConvertEngineSQL; -- ??? + PREPARE st FROM @ConvertEngineSQL; + EXECUTE st; + DEALLOCATE PREPARE st; + +END; + +$$ + +DELIMITER ; \ No newline at end of file -- 2.39.2