2014-10-10 167 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

相關問題