SET FOREIGN_KEY_CHECKS=0;
DROP PROCEDURE IF EXISTS `admin_check_character`;
DELIMITER ;;
CREATE PROCEDURE `admin_check_character`(in_DataBaseName varchar(20),in_character varchar(20),in_collation varchar(20))
COMMENT '校正字段排序规则同数据库排序规则一致'
BEGIN
declare cur_sql varchar(500);
declare done int default false;
declare cur cursor for
select
concat('ALTER TABLE `',a.table_name,'` CONVERT TO CHARACTER SET ',in_character,' COLLATE ',in_collation,';')
from information_schema.tables a
left join information_schema.columns b on b.table_schema=a.table_schema and b.table_name=a.table_name
where a.table_schema=in_DataBaseName and a.table_type in ('BASE TABLE','BASE TaBLE') and (b.CHARACTER_SET_NAME<>in_character and b.collation_name<>in_collation)
group by a.table_name;
declare continue handler for NOT FOUND set done=TRUE;
open cur;
out_loop: loop
fetch cur into cur_sql;
if done then
leave out_loop;
end if;
set @strsql=cur_sql;
prepare stmt from @strsql;
execute stmt;
SET done=false;
end loop out_loop;
close cur;
END
;;
DELIMITER ;
/*四:检查数据库的字符集和排序规则*/
/*注:tdxdb 即为要修改的库,utf8和utf8_general_ci即为要修改的排序规则,保持跟库一致*/
call admin_check_character('test1','utf8','utf8_general_ci');
drop PROCEDURE admin_check_character;