3

私がやりたいことは、テーブル名をストアド プロシージャのパラメータとして渡すことによって、mysql でテーブルを作成することです。mysql のストアド プロシージャに次のコードを使用しています。

DELIMITER //
CREATE PROCEDURE createtable(IN tablename varchar(20))
BEGIN
   SET @s=CONCAT('CREATE TABLE', tablename, '(month varchar(20))');
   PREPARE stmt FROM @s;
   EXECUTE stmt;
END //

そして私がそれを呼び出すとき

CALL createtable('account');

次のエラーが表示されます

SQL 構文にエラーがあります。正しい構文については、MySQL サーバーのバージョンを確認してください...

どこが間違っているのかわからない..

4

1 に答える 1

2

テーブル名の前後のスペースを忘れました。試す

DELIMITER //
CREATE PROCEDURE createtable(IN tablename varchar(20))
BEGIN
    SET @s=CONCAT('CREATE TABLE ', tablename, ' (month varchar(20))');
    PREPARE stmt FROM @s;
    EXECUTE stmt;
END //
于 2012-08-07T11:24:20.867 に答える