mysql - 将mysql数据库中的表的所有列更改为大写

标签 mysql ubuntu-14.04

DELIMITER // 
DROP PROCEDURE IF EXISTS uppercasecol // 

CREATE PROCEDURE uppercasecol(IN tblname VARCHAR(200)) 
BEGIN 
DECLARE done INT DEFAULT 0; 
DECLARE oldname VARCHAR(200); 
DECLARE cur CURSOR FOR SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_SCHEMA='ADM01' AND TABLE_NAME=tblname; 
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; 
OPEN cur; 
REPEAT 
FETCH cur INTO oldname; 
SET @newname = UPPER(oldname); 
#IF newname equals to oldname, do nothing; 
#select 'a' <> 'A'; -> 0 
#select 'a' <> BINARY 'A'; -> 1 
SET @isNotSame = @newname <> BINARY oldname; 
IF NOT done && @isNotSame THEN 
SET @SQL = CONCAT('ALTER TABLE `',tblname,'` CHANGE COLUMN `',oldname,'` @newname'); 
PREPARE tmpstmt FROM @SQL; 
EXECUTE tmpstmt; 
DEALLOCATE PREPARE tmpstmt; 
END IF; 
UNTIL done END REPEAT; 
CLOSE cur; 
END // 
DELIMITER ;

CALL uppercasecol('USER_MODULE');

我正在使用上面的代码将列名转换为大写,但代码在 CONCAT('ALTER TABLE ',tblname,' CHANGE COLUMN ',oldname,' @newname').谁能帮我解决这个问题......

提前致谢

最佳答案

ALTER TABLE `tablename` CHANGE COLUMN `oldname` `newname` datatype(size) NOT NULL;

试试这个

关于mysql - 将mysql数据库中的表的所有列更改为大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32495856/

相关文章:

PHP/MySQL : Show only specific columns within a loop?

linux - Chef 从命令行管理报告

elasticsearch - 索引使用Elasticsearch从Apache Nut抓取的数据?

java - 线程 "main"java.lang.NoClassDefFoundError 在 apach nutch 中的异常

SSL 证书已更新但更改不可见

php - 如何使用多列索引优化 MySQL 查询?

mysql - 使用pig将数据插入mysql表

mysql - 为用户配置文件创建mysql数据库

php - MySQL PDO;从排序结果中获取行,并且它的位置唯一

java - 缺少 Artifact com.oracle :ojdbc6:jar:11. 2.0 ?