已修改。
DROP FUNCTION IF EXISTS PersonName;
DELIMITER |;
CREATE FUNCTION PersonName( personID SMALLINT )
RETURNS CHAR(20)
BEGIN
DECLARE pname CHAR(20) DEFAULT '';
SELECT name INTO pname FROM family WHERE ID=personID;
RETURN pname;
END;
|
DELIMITER ;
这段代码有什么问题?我得到以下错误。
There seems to be an error in your SQL query. The MySQL server error output below, if there is any, may also help you in diagnosing the problem
错误:未知的标点符号字符串@ 102 字符串:|; SQL:如果删除函数 EXISTS PersonName;# MySQL 返回一个 空结果集(即零行)。
分隔符 |;分隔符 |;分隔符 |; 分隔符 |;分隔符 |;分隔符 |; 分隔符 |;
SQL查询:
分隔符 |;
MySQL 说:文档 #1064 - 您的 SQL 语法有误;检查手册 对应你的MySQL服务器 使用正确语法的版本 在“DELIMITER |”附近在第 1 行
最佳答案
我会删除 END
之后的分号。
...
END
|
DELIMITER ;
关于您的评论,声明新分隔符时不能使用当前分隔符。这听起来令人困惑,但考虑一下你是否这样做:
DELIMITER |;
现在 MySQL 会认为分隔符是“|;” (两个字符,一个竖线和一个分号)。如果您考虑一下,DELIMITER
必须由 MySQL 客户端以特殊方式处理。这是唯一一个不能跟在当前分隔符后面的语句。
因此,当将分隔符设置为管道时,请执行以下操作:
DELIMITER |
将其设置回分号时,请执行以下操作:
DELIMITER ;
FWIW,我在 MySQL 5.0.75 上的本地测试数据库上运行了以下命令,没有出现错误:
DROP FUNCTION IF EXISTS PersonName;
DELIMITER |
CREATE FUNCTION PersonName( personID SMALLINT )
RETURNS CHAR(20)
BEGIN
DECLARE pname CHAR(20) DEFAULT '';
SELECT name INTO pname FROM family WHERE ID=personID;
RETURN pname;
END
|
DELIMITER ;
关于mysql分隔符错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1267172/