无法创建此 MySQL UDF

Posted

技术标签:

【中文标题】无法创建此 MySQL UDF【英文标题】:Can't get this MySQL UDF to Create 【发布时间】:2015-04-22 10:02:41 【问题描述】:

我在尝试创建此函数时收到了各种错误代码,最近的一个是:“1064 - 您的 SQL 语法有错误;请查看与您的 MariaDB 服务器版本相对应的手册以获取正确信息在第 2 行的 '' 附近使用的语法"

CREATE FUNCTION DebtOwed(SearchEmail Varchar(70))
RETURNS FLOAT(10,2);
BEGIN
  DECLARE Total Float(10,2);
  SELECT Sum(Amount) INTO Total
  FROM tblFinances
  WHERE email=SearchEmail AND Paid=False ;
  RETURN Total;
END;

关于我做错了什么的任何线索?

【问题讨论】:

不确定是否应该在 RETURNS 子句后加分号 有帮助,谢谢! 【参考方案1】:

您需要在函数定义期间设置不同的分隔符。

所以是这样的:

DELIMITER $$

CREATE FUNCTION DebtOwed(SearchEmail Varchar(70))
RETURNS FLOAT(10,2)
BEGIN
  DECLARE Total Float(10,2);
  SELECT Sum(Amount) INTO Total
  FROM tblFinances
  WHERE email=SearchEmail AND Paid=False ;
  RETURN Total;
END$$

DELIMITER ;

【讨论】:

【参考方案2】:

解决方案是需要不同的分隔符并删除 ;返回后 FLOAT(10,2)

DELIMITER $$
CREATE FUNCTION DebtOwed(SearchEmail Varchar(70))
RETURNS FLOAT(10,2)
BEGIN
  DECLARE Total Float(10,2);
  SELECT Sum(Amount) INTO Total
  FROM tblFinances
  WHERE email=SearchEmail AND Paid=False ;
  RETURN Total;
END$$
DELIMITER ;

谢谢!

【讨论】:

以上是关于无法创建此 MySQL UDF的主要内容,如果未能解决你的问题,请参考以下文章

UDF 中的 COLLATE 无法按预期工作

mysql udf 错误 - 无法在 ubuntu 12.04 64 位中安装

MySQL UDF 插件无法执行 Shell 命令(使用 system() 或 execl())

疑难杂症----udf提权无法导出.dll

udf 创建的时间序列无法写入镶木地板

PySpark UDF 无法识别参数数量