繁体   English   中英

MySQL存储过程语法

[英]MySQL stored procedure syntax

我正在尝试在MySQL中创建一个非常基本的存储过程。 它必须增加表中的int值。 我还希望删除存储过程(如果已存在)。 存储过程中的sql本身可以正常运行。

我收到此错误:

您的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

尝试这个

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 ;

我自己找到了答案:

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

我仍然不知道为什么它不接受我提出的其他查询,所以如果有人可以在这个问题上说几句话,我会很高兴的:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM