[英]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.