3

我发现这个函数用于将字符串中单词的第一个字母大写,但是当我尝试在 PHPMyadmin 中的 SQL 中运行它时,它在第 8 行给了我一个语法错误。谁能帮我解决问题是什么?这是代码:

CREATE FUNCTION CAP_FIRST (input VARCHAR(255))

RETURNS VARCHAR(255)

DETERMINISTIC

BEGIN
DECLARE len INT;
DECLARE i INT;

SET len   = CHAR_LENGTH(input);
SET input = LOWER(input);
SET i = 0;

WHILE (i < len) DO
    IF (MID(input,i,1) = ' ' OR i = 0) THEN
        IF (i < len) THEN
            SET input = CONCAT(
                LEFT(input,i),
                UPPER(MID(input,i + 1,1)),
                RIGHT(input,len - i - 1)
            );
        END IF;
    END IF;
    SET i = i + 1;
END WHILE;

RETURN input;
END;

这就是错误:MySQL 说:文档 #1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 8 行的 '' 附近使用正确的语法

4

1 回答 1

6

定界符向数据库引擎发出语句结束的信号。通常是;. 但这将首先结束存储过程;。它的定义是不完整的。

您可以更改分隔符并将其添加到程序的末尾。之后将分隔符改回;

delimiter |
CREATE FUNCTION CAP_FIRST (input VARCHAR(255))
...
END;
|
delimiter ;
于 2013-03-08T18:46:23.170 回答