我从另一个sql应用程序导入了一个巨大的数据库,并将其转换为mysql。为了加快进程,我创建了任意长度的文本字段。
我想修改每个表,使字段不超过需要的大小。基于这个网站,我想出了这两个程序
DROP PROCEDURE getFieldMaxWidth;
DROP PROCEDURE modifyFieldMaxWidth;
DELIMITER $$
CREATE PROCEDURE getFieldMaxWidth(tab_name VARCHAR(40), fld_name VARCHAR(40), OUT value INT(11))
BEGIN
SET @t1:= CONCAT('SELECT MAX(LENGTH(',fld_name,')) FROM ',tab_name, ' INTO @value');
PREPARE stmt3 FROM @t1;
EXECUTE stmt3;
DEALLOCATE PREPARE stmt3;
END;
CREATE PROCEDURE modifyFieldMaxWidth(IN tab_name VARCHAR(40), IN fld_name VARCHAR(40))
BEGIN
SET @t1:=256;
CALL getFieldMaxWidth(tab_name, fld_name, @t1);
SET @t2:=CONCAT('ALTER TABLE ',tab_name,' CHANGE ',fld_name,' ',fld_name,' VARCHAR(',@t1,')');
PREPARE stmt4 FROM @t2;
EXECUTE stmt4;
DEALLOCATE PREPARE stmt4;
END$$
我不断得到的是这个错误信息:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1
哪个州
不正确地使用保留字
有人能帮我吗?不知道mysql认为我用错了什么保留字?
暂无答案!
目前还没有任何答案,快来回答吧!