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 構文にエラーがあります。8 行目の near '' を使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

4

1 に答える 1

6

デリミタは、DB エンジンにステートメントの終わりを知らせます。通常は です;。しかし、それは最初のストアド プロシージャを終了します;。そして、その定義は不完全です。

区切り文字を変更して、プロシージャの最後に追加できます。その後、区切り文字を元に戻します;

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