Хранимая процедура SQL - Запустите SQL-запрос - PullRequest
1 голос
/ 27 марта 2019

Вот как я создаю свою хранимую процедуру:

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 внутри одной из моих баз данных выглядит как длинный текст и выглядит так:

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-запрос вручную, синтаксическая ошибка отсутствует.Может кто-нибудь объяснить мне, что я делаю не так?

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...