@ukoHka
Всего понемногу

Почему не создается хранимая процедура?

Сам запрос:
Create procedure add_column_grades (
    in col_name VARCHAR(255)
)
Begin
IF NOT EXISTS(SELECT NULL 
        FROM INFORMATION_SCHEMA.COLUMNS
        WHERE  table_name = 'grades'
        AND table_schema = 'st'
        AND column_name = col_name)  
THEN
  ALTER TABLE `grades` ADD col_name  VARCHAR(255) NOT NULL DEFAULT '';
END IF;
end

Выдает ошибку:
#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 '' at line 11
но там пустая строка.
Когда пытаюсь создать процедуру через phpmyadmin, имя переменной обрамляется в ``, но при выполнении процедуры добавляется поле 'col_name' вместо выбранного названия 'test'.
  • Вопрос задан
  • 173 просмотра
Решения вопроса 1
qonand
@qonand
Software Engineer
Не создается потому что в MySQL динамическое построение запросов реализовано не так как Вы пытаетесь сделать, используйте вместо ALTER TABLE `grades` ADD col_name VARCHAR(255) NOT NULL DEFAULT '' вот это:
SET @q = CONCAT("ALTER TABLE `grades` ADD ",col_name," VARCHAR(255) NOT NULL DEFAULT '';");
PREPARE myQuery FROM @q;
EXECUTE myQuery;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы