0

我想动态创建临时表。我将列名作为参数传递给存储过程。

示例

DELIMITER $$
create procedure sptemp(IN nm varchar(50))
BEGIN

SET @q = CONCAT('CREATE TEMPORARY TABLE temptable    // Error occuring here @q 
             SELECT DISTINCT ', nm ,' AS Col FROM table1');
PREPARE d FROM @q;
EXECUTE d;
DEALLOCATE PREPARE d;
END$$
DELIMITER ;

错误:语法错误,意外'@',期待':'

4

1 回答 1

1
SET @q = CONCAT('CREATE TEMPORARY TABLE IF NOT EXISTS temptable (INDEX(Col)) ENGINE=MyISAM 
AS (SELECT DISTINCT ', nm ,' AS Col FROM table1)');

作为奖励 - 您的 Col 列的索引。

于 2014-10-10T07:41:16.697 回答