mysql - 如何将变量传递给 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 语句。我怎样才能在这里做我想做的事情?
解决方案
你所要求的需要动态 SQL。
考虑:
set @maxlen = 14;
set @sql = concat('alter table tbl1 add chat varchar(', @maxlen, ')');
prepare stmt from @sql;
execute stmt;
deallocate prepare stmt;
推荐阅读
- java - 如何将提到的 java 对象转换为 java 中的列表对象。java 对象内部有一个列表,其中包含相同类型的对象
- android - 文件中的 Android Studio 错误但项目编译并运行:未解决的参考
- android - 什么是 Unity 2020.1.0b16 Android 支持设置错误:无法找到 untity.exe
- html - 在 HTML5 中使用属性 align 是否合法?
- azure - 从 Azure 存储队列获取重复消息
- python - 来自实验数据的正态拟合
- python - __getattr__ 返回列表的索引
- angular - Angular 9:如何单独创建 .ts 文件?
- angular - Angular Syncfusion 计划:打开编辑器预约错误 - 无法读取未定义的属性“0”
- flutter - 如何使容器扩展到包含行的完整(动态)高度?