Я хочу, чтобы получить все различные значения столбца (Task в данном случае) из таблицы (набора данных в данном случае). Значения задачи будут отображаться как имя столбца для таблицы, которую я намереваюсь создать с помощью этой процедуры (хотя она не определена в настоящее время, а только напечатана). Но это дает ошибку на линииОшибка в команде SET в процедуре MySQL
SET qry = CONCAT("CREATE TABLE ",tblname," (TEAM varchar(20) PRIMARY KEY ,");
говоря конец не хватало. Когда я положил конец он говорит точка с запятой отсутствует и наоборот.
DELIMITER //
CREATE PROCEDURE `createTable` (IN tblName varchar(20))
BEGIN
DECLARE task varchar(20) DEFAULT "";
DECLARE exit_loop BOOLEAN;
SET qry = CONCAT("CREATE TABLE ",tblname," (TEAM varchar(20) PRIMARY KEY ,");
DECLARE task_curs CURSOR FOR SELECT DISTINCT Task FROM dataset;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET exit_loop = TRUE;
OPEN task_curs;
my_loop: loop
FETCH task_curs into task;
qry=CONCAT(qry,task, ' INT DEFAULT 0, ');
IF exit_loop THEN
CLOSE task_curs;
LEAVE my_loop;
END IF;
END LOOP my_loop;
qry=TRIM(TRAILING ',' FROM qry);
qry=CONCAT(qry, ');');
SELECT qry;
END; //
DELIMITER ;
Возможно, что-то не так с синтаксисом? Благодаря!
Спасибо. Это сработало для меня. Хотя здесь, похоже, есть новая проблема. Предполагая, что я получаю A, B, C как разные значения из столбца Task, результирующий запрос - это что-то вроде CREATE TABLE TableTemp (TEAM varchar (20) PRIMARY KEY, A INT DEFAULT 0, B INT DEFAULT 0, C INT DEFAULT 0, C INT DEFAULT 0); Он добавляет последнее значение дважды. Что может быть проблемой? – GvanJoic
@GvanJoic: см. Обновленный код. – wchiquito
Да, это работает. Большое спасибо. :) – GvanJoic