我刚开始尝试使用MySQL函数,在尝试构建下面的函数时出现错误。
-> DELIMITER //
-> CREATE FUNCTION addD(d VARCHAR(20), rt VARCHAR(40), a VARCHAR(5), de VARCHAR(35))
-> RETURNS VARCHAR(20)
-> BEGIN
-> DECLARE ret VARCHAR(20);
-> IF (SELECT count(DN) FROM DB.TABLE WHERE DN = d) > 0 THEN ret=concat(s,' - exists!');
-> ELSE ret = 'clear';
-> IF ret = 'clear' THEN (INSERT INTO DB.TABLE (DN,ROUTE,ACTIVE,Description) VALUES (dn,rt,a,de));
-> RETURN ret;
-> END //
我得到的错误是:
错误1064(42000):您的SQL语法有错误;检查 手册,对应右边的MySQL服务器版本 在'= CONCAT(dn,' - exists!')附近使用的语法; ELSE ret ='clear'; IF ret ='clear'THEN(IN'在第1行
任何帮助都会很棒。请小姐,因为我不熟悉MySQL函数。
答案 0 :(得分:2)
您的IF
语法不正确,您需要使用SET
或SELECT
为变量分配值。
DELIMITER //
CREATE FUNCTION addD(d VARCHAR(20), rt VARCHAR(40), a VARCHAR(5), de VARCHAR(35))
RETURNS VARCHAR(20)
BEGIN
DECLARE ret VARCHAR(20);
IF (SELECT count(DN) FROM DB.TABLE WHERE DN = d) > 0 THEN
SET ret = CONCAT(s,' - exists!');
ELSE
SET ret = 'clear';
END IF;
IF ret = 'clear' THEN
INSERT INTO DB.TABLE (DN,ROUTE,ACTIVE,Description) VALUES (dn,rt,a,de);
END IF;
RETURN ret;
END //
注意在声明中
SET ret = CONCAT(s,' - exists!');
^
您正在尝试与不存在的变量s
连接;
此外,它看起来像是存储过程的作业,而不是存储的函数。