我几乎没有学习 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 的单行函数示例。(https://dev.mysql.com/doc/refman/5.0/en/create-procedure.html上的 'hello' 函数)
编辑:补充说我正在 MySQL 命令行客户端中创建这个函数。