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 回答