不确定返回无效语法的原因:
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
写进去的时候好像没有什么错误。
最佳答案
基于以下official documentation:
信号语句中的条件值指示要返回的错误值。它可以是一个SQLSTATE值(一个5个字符的字符串文字)或一个引用先前用DECLARE定义的命名条件的条件名称。。。条件(见第13.6.7.1节,“声明。。。条件语法”)。
尝试以下语法并将信号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;