繁体   English   中英

IF ELSE 语句在 MySQL 中产生无效语法

[英]IF ELSE statement is producing invalid syntax in MySQL

不知道为什么这会返回无效的语法:

CREATE DEFINER=`root`@`localhost` PROCEDURE `AddColor`(
                            IN hexvalue varchar(7),
                          IN notes varchar(50))
    BEGIN
    IF hexvalue REGEXP '^#[0-9A-F]{6}$' THEN

       INSERT INTO data.colors(hexvalue,notes) VALUES (hexvalue,notes);

    ELSE

       SIGNAL SQLSTATE '400'
       SET MESSAGE_TEXT = 'Invalid hex value specified';

    END IF;
    END

写入时似乎没有任何错误。

基于以下官方文档:

SIGNAL 语句中的condition_value 指示要返回的错误值。 它可以是一个 SQLSTATE 值(一个 5 个字符的字符串文字)或一个 condition_name,它引用先前用 DECLARE ... CONDITION 定义的命名条件(请参阅第 13.6.7.1 节,“DECLARE ... CONDITION 语法”)。

尝试以下语法并将 SIGNAL SQLSTATE 值更改为04000

CREATE DEFINER=`root`@`localhost` PROCEDURE `AddColor`(
                    IN hexvalue varchar(7),
                    IN notes varchar(50))
BEGIN
IF  (hexvalue REGEXP '^#[0-9A-F]{6}$') THEN

        INSERT INTO data.colors(`hexvalue`,`notes`) VALUES (hexvalue,notes);

    ELSE

        SIGNAL SQLSTATE '04000' SET MESSAGE_TEXT = 'Invalid hex value specified';

    END IF;
END;

暂无
暂无

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

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