Невозможно выполнить alter table в хранимой процедуре MySQL - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь использовать команду alter table в хранимой процедуре MySQL,
Я использовал CONCAT для формирования запроса, который требуется выполнить в процедуре,
Сформированный запрос alter работает нормально, если я запускаюэто вне хранимой процедуры.
Как я могу выполнить ее внутри процедуры?

Ниже приведен мой фрагмент -

CREATE DEFINER=`root`@`localhost` PROCEDURE `alter_table_in_sp`()
BEGIN
    DECLARE snapshot_year INT;
    DECLARE partition_name VARCHAR(17);
    DECLARE addPartition VARCHAR(100);

    SET snapshot_year := DATE_FORMAT(NOW(),'%Y');
    SET partition_name := CONCAT('snapshot_',snapshot_year);

    SET addPartition := CONCAT('ALTER TABLE snapshot ADD PARTITION (PARTITION ', partition_name, ' VALUES IN (', snapshot_year,'))');
    #EXECUTE addPartition;

    #PREPARE _stmt FROM @addPartition;
    #EXECUTE _stmt;
    #DEALLOCATE PREPARE _stmt;
END

Я попробовал следующее -

1.

EXECUTE addPartition 

Ошибка -

Error Code: 1243. Unknown prepared statement handler (addPartition) given to EXECUTE

2.

PREPARE _stmt FROM @addPartition;
EXECUTE _stmt;
DEALLOCATE PREPARE _stmt;

Ошибка -

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 'NULL' at line 1

Ссылки -
СохраненоПроцедура с ALTER TABLE

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