2014-10-10 168 views
0

我想动态创建临时表。我将列名作为参数传递给存储过程。MySQL:语法错误,意外的'@',期待':'

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 ; 

错误:语法错误,意想不到的 '@',希望 ':'

回答

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

作为奖励 - 你col列的索引。

+0

非常感谢。 – Meem 2014-10-10 07:48:38

相关问题