【发布时间】:2021-06-28 08:25:08
【问题描述】:
在程序内部,我想创建一个临时表“report”,其中包含另一个表“descriptions”行内容的列名,但我收到错误,因为我的查询不是使用变量“tmp_description”值,而是使用它的名称来创建一个新的列。如何使用变量值作为新列的名称?
DECLARE n INT DEFAULT 0;
DECLARE i INT DEFAULT 0;
DECLARE tmp_description varchar(30);
...
CREATE TEMPORARY TABLE descriptions (description varchar(30));
insert into descriptions
select distinct description from pure;
SELECT COUNT(*) INTO n FROM descriptions;
SET i=0;
WHILE i<n DO
SELECT * INTO tmp_description FROM (SELECT * FROM descriptions LIMIT i,1) t1;
ALTER TABLE report
ADD COLUMN
tmp_description FLOAT(2) DEFAULT 0.0; <-- I get error here
SET i = i + 1;
END WHILE;
【问题讨论】:
-
你必须在
PREPARE语句中使用动态SQL。 -
你读过这个吗? References
-
@MuhKandaWibawaPutra,不,谢谢
-
@MuhKandaWibawaPutra 另一个 DBMS,无济于事(除了需要动态 SQL 的事实)。
-
@Akina,正如我在问题中所说,是的。
标签: mysql sql procedure temp-tables alter