[英]MySQL syntax (function) is error
CREATE FUNCTION FC_IDKRITERIA()
RETURNS CHAR(3)
AS
BEGIN
DECLARE @MAX INT , @KODEBARU CHAR(3)
SELECT @MAX = MAX (RIGHT(IDKRITERIA,2)) FROM KRITERIA
IF @MAX IS NULL
SET @MAX = 0
SET @KODEBARU = 'K' + RIGHT('0'+CONVERT(VARCHAR(3),@MAX+ 1 ) ,2)
RETURN @KODEBARU
END
过程中的每个语句都必须以;
结尾;
. 为了避免结束函数定义,请使用DELIMITER
命令将命令分隔符更改为其他内容。
在SELECT
子句中进行变量赋值时,必须使用:=
。
函数定义的开头没有AS
。
您不声明以@
开头的变量。
您需要在IF
语句中使用THEN
和END IF
。
要连接字符串,请使用CONCAT()
,而不是+
。
您的CONVERT()
参数顺序错误,并且VARCHAR(3)
不是有效的类型参数,它应该是CHAR(3)
。
在函数中,不能在顶层使用SELECT
语句,因为这意味着返回结果集,而函数只能返回单个值。 所以你必须从(SELECT ...)
表达式中分配@MAX
。
DELIMITER $$
CREATE FUNCTION FC_IDKRITERIA() RETURNS CHAR(3)
BEGIN
SET @MAX = (SELECT MAX (RIGHT(IDKRITERIA,2)) FROM KRITERIA);
IF @MAX IS NULL
THEN SET @MAX = 0;
END IF;
SET @KODEBARU = CONCAT('K', RIGHT('0'+CONVERT(@MAX+ 1, CHAR(3)) ,2));
RETURN @KODEBARU;
END;
$$
DELIMITER ;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.