UPPERCASE.sql 875 B

12345678910111213141516171819202122232425262728293031323334353637
  1. DROP PROCEDURE IF EXISTS `UPPERCASE`;
  2. delimiter ;;
  3. CREATE PROCEDURE `UPPERCASE`(IN DBNAME VARCHAR(200))
  4. BEGIN
  5. DECLARE DONE INT DEFAULT 0;
  6. DECLARE OLDNAME VARCHAR(200);
  7. DECLARE CUR CURSOR FOR SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = DBNAME;
  8. DECLARE CONTINUE HANDLER FOR NOT FOUND SET DONE = 1;
  9. OPEN CUR;
  10. REPEAT
  11. FETCH CUR INTO OLDNAME;
  12. SET @NEWNAME = UPPER(OLDNAME);
  13. SET @ISNOTSAME = @NEWNAME <> BINARY OLDNAME;
  14. IF NOT DONE && @ISNOTSAME THEN
  15. SET @SQL = CONCAT('RENAME TABLE `',OLDNAME,'` TO `', LOWER(@NEWNAME), '_TMP` ');
  16. PREPARE TMPSTMT FROM @SQL;
  17. EXECUTE TMPSTMT;
  18. SET @SQL = CONCAT('RENAME TABLE `',LOWER(@NEWNAME),'_TMP` TO `',@NEWNAME, '`');
  19. PREPARE TMPSTMT FROM @SQL;
  20. EXECUTE TMPSTMT;
  21. DEALLOCATE PREPARE TMPSTMT;
  22. END IF;
  23. UNTIL DONE END REPEAT;
  24. CLOSE CUR;
  25. END
  26. ;;