【问题标题】:Errors with MySQL stored function creation ERROR 1064 & 1327MySQL 存储函数创建错误 ERROR 1064 & 1327
【发布时间】:2011-03-25 07:46:40
【问题描述】:

我正在使用 MySQL v5.1.36,我正在尝试使用此代码创建一个存储函数。

DELIMITER //
CREATE FUNCTION `modx`.getSTID (x VARCHAR(255)) RETURNS INT DETERMINISTIC
    BEGIN
    DECLARE y INT;
    SELECT id INTO y
    FROM `modx`.coverage_state
    WHERE `coverage_state`.name = x;
    RETURN y;
    END//

当我进入 MySQL 控制台时,我得到了这个响应。

mysql>  DELIMITER //
mysql>  CREATE FUNCTION `modx`.getSTID (x VARCHAR(255)) RETURNS INT DETERMINISTIC
    ->          BEGIN
    ->          DECLARE y INT;
ERROR 1064 (42000): 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 '' at
line 3
mysql>          SELECT id INTO y
    ->          FROM `modx`.coverage_state
    ->          WHERE `coverage_state`.name = x;
ERROR 1327 (42000): Undeclared variable: y
mysql>          RETURN y;
ERROR 1064 (42000): 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 'RETUR
N y' at line 1
mysql>          END//

从我在网上可以找到的内容来看,我的语法是正确的。我做错了什么?

【问题讨论】:

    标签: sql mysql function mysql-error-1064 mysql-error-1327


    【解决方案1】:

    从 mysql 控制台创建函数/过程时,第一个命令应该是DELIMITER //。否则,它使用默认分隔符(;),

    【讨论】:

    • 啊,当我从控制台中获取信息时,我错过了。我会在问题中解决这个问题。
    【解决方案2】:

    我通过在我的变量周围添加 `` 解决了我的问题。这是我最终得到的代码。

    DELIMITER //
    CREATE FUNCTION `modx`.getSTID (x VARCHAR(255)) RETURNS INT DETERMINISTIC
        BEGIN
        DECLARE `y` INT;
        SELECT id INTO `y`
        FROM `modx`.coverage_state
        WHERE `coverage_state`.name = `x`;
        RETURN `y`;
        END//
    DELIMITER ;
    

    【讨论】:

      猜你喜欢
      • 2014-12-17
      • 2020-12-02
      • 2013-11-13
      • 1970-01-01
      • 2013-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多