Php 在MySQL中创建函数时出现错误1064

Php 在MySQL中创建函数时出现错误1064,php,mysql,Php,Mysql,朋友们 我正在尝试使用以下脚本在MySQL中创建函数: CREATE FUNCTION CurrentMemoDepartment(MID INT) RETURNS INT BEGIN DECLARE DeptID INT; SET DeptID = 0; SELECT TOP 1 TDeptID INTO DeptID FROM Transactions WHERE MemoID = MID ORDER BY ID DESC; RETURN DeptID; END 但它说:

朋友们

我正在尝试使用以下脚本在MySQL中创建函数:

CREATE FUNCTION CurrentMemoDepartment(MID INT)
RETURNS INT
BEGIN
  DECLARE DeptID INT;
  SET DeptID = 0;
  SELECT TOP 1 TDeptID INTO DeptID FROM Transactions WHERE MemoID = MID ORDER BY ID DESC;
  RETURN DeptID;
END
但它说:


1064-您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以了解第4行附近要使用的正确语法使用分隔符声明


单语句函数不需要在开始-结束、中间变量和分隔符中重新赋值

MySQL使用的是LIMIT,而不是TopN

创建函数CurrentMemoDepartmentMID INT 返回整数 返回selecttdeptid 来自交易 其中MemoID=MID 按ID描述订购 限值1;
我的朋友,最重要的是sql server限制是MySQL接受的。但你们能给我解释一下什么是分隔符吗?mysql知道命令的开始和结束位置,通常是用分号。但是您正在定义一个函数/存储过程,它是mysql的全部文本,因此您必须给他一个关于如何查找内部SQLStatement的提示,在您的例子中,它以END$$结尾,然后将其恢复正常
DELIMITER $$
CREATE FUNCTION CurrentMemoDepartment(MID INT)
RETURNS INT
BEGIN
  DECLARE DeptID INT;
  SET DeptID = 0;
  SELECT TDeptID INTO DeptID FROM Transactions WHERE MemoID = MID ORDER BY ID DESC LIMIT 1;
  RETURN DeptID;
END$$
DELIMITER ;