【问题标题】:MySQL stored procedure syntaxMySQL 存储过程语法
【发布时间】:2015-12-28 03:27:10
【问题描述】:

我正在尝试在 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

【问题讨论】:

    标签: mysql stored-procedures


    【解决方案1】:

    试试这个

    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 ;
    

    【讨论】:

    • 我想我只需要其中一个。我在上面发布的那些,只有两次单独的尝试,但失败了。我会立即尝试您的建议
    • 这样做会给我这个错误:#1064 - 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 6 行的“DELIMITER”附近使用正确的语法
    • 请再试一次 我编辑了我的代码,它可以创建我在 Mysql Workbench 上测试的程序
    • 这对我也不起作用。我自己找到了一个解决方案,在几秒钟内将其添加到 mig 问题中
    【解决方案2】:

    我自己找到了答案:

    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
    

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

    【讨论】:

      猜你喜欢
      • 2016-10-28
      • 2020-03-08
      • 2012-04-12
      • 2014-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多