简体   繁体   English

MySQL存储过程语法

[英]MySQL stored procedure syntax

I am trying to create a very basic stored procedure in MySQL. 我正在尝试在MySQL中创建一个非常基本的存储过程。 It has to increment an int value in a table. 它必须增加表中的int值。 I also want the stored procedure to be dropped if already exists. 我还希望删除存储过程(如果已存在)。 The sql inside the stored procedure works fine on its own btw. 存储过程中的sql本身可以正常运行。

I get this error: 我收到此错误:

You have an error in your SQL syntax; 您的SQL语法有误; check the manual that corresponds to your MySQL server version for the right syntax to use near 'END' at line 5 检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第5行的“ END”附近使用

i have tried: 我努力了:

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

SOLUTION: 解:

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

Try this 尝试这个

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 ;

I found an answer myself: 我自己找到了答案:

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

I still have no idea why it wouldnt accept the other queries i made, so if anyone can spare a few words on the subject, i'd be glad :) 我仍然不知道为什么它不接受我提出的其他查询,所以如果有人可以在这个问题上说几句话,我会很高兴的:)

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

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