Для жизни меня, я не могу понять, почему я получаю эту ошибку:.MySQL хранимых процедуры 1064 Ошибка
[Err] 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
Я звоню простую хранимую процедуру с некоторыми переменными, переданными в чем вы не видите здесь настройки разделителя на //, но это тоже сделано.
Спасибо большое!
SET @dest_database = 'my_db';
SET @table_category_management_pages = 'category_management_pages';
CREATE PROCEDURE category_management_pages(
IN in_name varchar(255),
IN in_display varchar(255),
IN in_notes varchar(255),
IN in_order INT,
IN in_title varchar(255),
IN in_access_name varchar(255)
)
BEGIN
IF NOT EXISTS(
SELECT * FROM information_schema.COLUMNS
WHERE
TABLE_SCHEMA = @dest_database AND
TABLE_NAME = @table_category_management_pages AND
COLUMN_NAME = 'key_hash'
) THEN
# Add UNIQUE index on key_hash
SET @myPrep = CONCAT('ALTER TABLE `', @dest_database, '`.`', @table_category_management_pages, '` ADD COLUMN `key_hash` varchar(255) NULL, ADD UNIQUE INDEX (`key_hash`);');
prepare stmt from @myPrep;
execute stmt;
END IF;
# Update key_hash to latest hash
SET @myPrep = CONCAT('UPDATE `', @dest_database, '`.`', @table_category_management_pages, '`
SET `key_hash` = md5(`name`)');
prepare stmt from @myPrep;
execute stmt;
END//
Вы заявляли ** @ myPrep ** где-то перед его использованием? –
Я не думаю, что это необходимо. У меня есть другая процедура, которая отлично работает с тем же синтаксисом в этом отношении. –
, если используется локальная переменная, она должна быть объявлена перед использованием. Если используется глобальная переменная, объявление не требуется, поскольку оно уже было объявлено ранее системой. Также проверьте установку mysql. Новые версии в предыдущих версиях ужесточили некоторые правила. –