我正在尝试在MySQL中创建一个非常基本的存储过程。它必须在表中增加一个int值。我还希望删除存储过程(如果已存在)。存储过程中的sql在其自己的btw上工作正常。
我收到此错误:
您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 在第5行'END'附近
我试过了:
DELIMITER $$
DROP PROCEDURE IF EXISTS sp_version_increment$$
CREATE PROCEDURE `sp_version_increment`()
BEGIN
SET @ver = (SELECT version FROM version LIMIT 1) + 1;
UPDATE version SET version = @ver
END$$
DELIMITER
DELIMITER $$
DROP PROCEDURE IF EXISTS sp_version_increment$$
CREATE PROCEDURE `sp_version_increment`()
BEGIN
SET @ver = (SELECT version FROM version LIMIT 1) + 1;
UPDATE version SET version = @ver
END
解决方案:
DELIMITER $$
DROP PROCEDURE IF EXISTS sp_version_increment$$
CREATE PROCEDURE `sp_version_increment`()
BEGIN
SET @num = (SELECT number FROM version LIMIT 1) + 1;
UPDATE version SET number = @num;
END
答案 0 :(得分:0)
试试这个
DROP PROCEDURE IF EXISTS sp_version_increment;
DELIMITER $$
CREATE PROCEDURE `sp_version_increment`()
BEGIN
SET @ver = (SELECT version FROM version LIMIT 1) + 1;
UPDATE version SET version = @ver;
END $$
DELIMITER ;
DROP PROCEDURE IF EXISTS sp_version_increment;
DELIMITER $$
CREATE PROCEDURE `sp_version_increment`()
BEGIN
SET @ver = (SELECT version FROM version LIMIT 1) + 1;
UPDATE version SET version = @ver;
END $$
DELIMITER ;
答案 1 :(得分:0)
我自己找到了答案:
DELIMITER $$
DROP PROCEDURE IF EXISTS sp_version_increment$$
CREATE PROCEDURE `sp_version_increment`()
BEGIN
SET @num = (SELECT number FROM version LIMIT 1) + 1;
UPDATE version SET number = @num;
END
我仍然不知道为什么它不会接受我提出的其他问题,所以如果有人可以在这个问题上说几句话,我会很高兴:)