[英]Alter all columns of a table in mysql database to upper case
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');
I am using the above code to convert the column names to upper case but the code is giving error 1604(42000) in CONCAT('ALTER TABLE ',tblname,'
CHANGE COLUMN ',oldname,'
@newname'). 我正在使用上面的代码将列名转换为大写,但是代码在CONCAT中给出了错误1604(42000)('ALTER TABLE ',tblname,'
CHANGE COLUMN ',oldname,'
@newname')。 Can anyone help me out in this... 谁能帮我这个忙...
thanx in advance 预先感谢
ALTER TABLE `tablename` CHANGE COLUMN `oldname` `newname` datatype(size) NOT NULL;
尝试这个
尝试这个
SET @SQL = CONCAT('ALTER TABLE `',@tblname,'` CHANGE COLUMN `',@oldname,'` @newname');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.