對於我的生活,我想不通爲什麼我收到此錯誤: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安裝。新版本在之前的版本中收緊了一些鬆懈的規則。 –