存储过程-尝试获取字段大小

igetnqfo  于 2021-06-18  发布在  Mysql
关注(0)|答案(0)|浏览(160)

我从另一个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认为我用错了什么保留字?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题