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 に答える