MySQL表模板w/函数/过程

MySQL表模板w/函数/过程,mysql,sql,Mysql,Sql,我在同一个站点上创建了几个日志,所有日志都具有相同的结构,因此当我需要添加新日志时,我希望能够使用一个简单的函数或其他东西来完成(因为表结构将完全相同) 我得到的错误是: 错误1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解使用“BEGIN”附近的正确语法 如果存在LogbookTitle,则删除表; 在第2行创建表LogBookTit' 我尝试过很多方法:用“/”替换“;”,创建过程而不是函数,在LogBookTitle之前添加“@”,删除BEGI

我在同一个站点上创建了几个日志,所有日志都具有相同的结构,因此当我需要添加新日志时,我希望能够使用一个简单的函数或其他东西来完成(因为表结构将完全相同)

我得到的错误是:

错误1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解使用“BEGIN”附近的正确语法 如果存在LogbookTitle,则删除表; 在第2行创建表LogBookTit'

我尝试过很多方法:用“/”替换“;”,创建过程而不是函数,在LogBookTitle之前添加“@”,删除BEGIN/END,等等。我花了很长时间搜索示例,但都没有结果


上面的代码有什么问题?

您的问题非常类似于。因此,我将把它标记为它的副本。简言之,你需要一个陈述,它是。@Buggabill我认为这两者是不同的。尽管我试图创建一个名称为variable的表,但如果我仅在BEGIN/END块中将“LogbookTitle”更改为其他内容(非变量内容)(因此不使用LogbookTitle),我会得到相同的错误;也就是说,我的问题根本不是变量。
DELIMITER //

CREATE FUNCTION GenerateNewLogbook(LogbookTitle varchar(15))
    BEGIN
        DROP TABLE IF EXISTS LogbookTitle;
        CREATE TABLE LogBookTitle (
          time timestamp NOT NULL DEFAULT NOW(),
          username varchar(25) DEFAULT NULL,
          message text,
          crossout tinyint(1) NOT NULL DEFAULT '0',
          post_id mediumint(9) NOT NULL AUTO_INCREMENT,
          file_id text,
          PRIMARY KEY (post_id)
        ) ENGINE=InnoDb AUTO_INCREMENT=0 DEFAULT CHARACTER SET=latin1;
    END//

DELIMITER ;