Mysql SQL存储过程-运行SQL查询

Mysql SQL存储过程-运行SQL查询,mysql,sql,stored-procedures,Mysql,Sql,Stored Procedures,以下是我创建存储过程的方法: SET @SQL = (SELECT ddl_script FROM TABLENAME.versions where ID = 5) ; USE TABLENAME; DROP procedure IF EXISTS `ddl_stored_procedure`; DELIMITER $$ CREATE PROCEDURE `ddl_stored_procedure` () BEGIN PREPARE part1 FROM @SQL; EXECUTE pa

以下是我创建存储过程的方法:

SET @SQL = 
(SELECT ddl_script FROM TABLENAME.versions where ID = 5)
;

USE TABLENAME;
DROP procedure IF EXISTS `ddl_stored_procedure`;

DELIMITER $$
CREATE PROCEDURE `ddl_stored_procedure` ()
BEGIN

PREPARE part1 FROM @SQL;
EXECUTE part1;
DEALLOCATE PREPARE part1;

END$$
DELIMITER ;
这部分工作正常,我的存储过程已创建。现在,我尝试使用以下代码行运行存储过程来测试它:

CALL `DBNAME`.`ddl_stored_procedure`();
我得到了错误信息:

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'USE `xxx_landing`; CREATE TABLE `TABLE1` ( `ROW1` varchar(1), `T' at line 1
正在运行的代码是我的一个数据库中的一条SQL语句,为longtext,如下所示:

CREATE DATABASE `xxx_landing` /*!40100 DEFAULT CHARACTER SET utf8 */; 
USE `xxx_landing`; 

CREATE TABLE `TABLE1` ( 
    `ROW1` varchar(1), 
    `ROW2` varchar(20), 
    `ROW3` varchar(3) 
) 
ENGINE=InnoDB DEFAULT CHARSET=utf8; 

CREATE TABLE `TABLE2` ( 
    `ROW4` varchar(2), 
    `ROW5` varchar(10), 
    `ROW6` varchar(10), 
    `ROW7` varchar(10), 
    `ROW8` varchar(10), 
    `ROW9` varchar(50) 
) 
ENGINE=InnoDB DEFAULT CHARSET=utf8;
我不知道为什么存储过程无法创建数据库、使用数据库和创建所有表。如果手动执行SQL查询,则不会出现语法错误。 有人能解释一下我做错了什么吗

提前谢谢