首页 > 解决方案 > 如何将变量传递给 varchar 声明?

问题描述

极其简单的问题。我需要更改数据库中的一堆表以添加新列。这是我的代码:

# the maximum character length we allow for chat is 14
SET @maxlen = 14;

alter table tbl1 add chat varchar(@maxlen);
alter table tbl2 add chat varchar(@maxlen);
alter table tbl3 add chat varchar(@maxlen);
alter table tbl4 add chat varchar(@maxlen);
alter table tbl5 add chat varchar(@maxlen);

我得到错误: 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 'maxlen)' at line 1

它在错误代码中显示第 1 行,但错误发生在第 5 行,这是第一个 alter 语句。我怎样才能在这里做我想做的事情?

标签: mysql

解决方案


你所要求的需要动态 SQL。

考虑:

set @maxlen = 14;
set @sql = concat('alter table tbl1 add chat varchar(', @maxlen, ')');

prepare stmt from @sql;
execute stmt;
deallocate prepare stmt;

推荐阅读