私はMySQLをほとんど学んでいません(SQLiteから移行しています)。MySQL コマンド ライン クライアント内でカスタム関数を作成しようとしていますが、修正できないエラーが発生し、オンラインで回答を見つけることができません。私の最初の機能は次のように始まりました。
CREATE FUNCTION myDatabase.LCASE_ASCII_VALUE_AT(
unparsedLine VARCHAR(1024),
linePos int
) RETURNS int DETERMINISTIC
return ASCII( LCASE( RIGHT( CHAR_LENGTH(unparsedLine) - linePos + 1) ) );
このエラーが発生しました:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') )' at line 10
私の構文が間違っていた場所へのポインタはありますか? 私はこれらを疑っていましたが、問題を解決しませんでした:
- おそらく、MySQL は のような複合ステートメントを好まないでしょう
return ASCII( LCASE( ...
。しかし、ステートメントを手動で解明した後でも、同じエラーが発生しました (ただし、新たに解明されたステートメントの行では、スペースを節約するために解明されたステートメントを除外しています)。 - おそらく
DELIMITER $$ [function definition] END $$ DELIMITER ;
ビジネスは必須ですが、それでもエラーは修正されませんでした。MySQL のドキュメントには、DELIMITER が不要な 1 行の関数の例が示されています。( https://dev.mysql.com/doc/refman/5.0/en/create-procedure.htmlの 'hello' 関数)
編集: MySQL コマンド ライン クライアント内でこの関数を作成していることを追加しました。