体改.
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 ;
Run Code Online (Sandbox Code Playgroud)
这个代码怎么了?我得到以下错误.
您的SQL查询中似乎有错误.下面的MySQL服务器错误输出(如果有的话)也可以帮助您诊断问题
错误:未知的标点字符串@ 102 STR:|; SQL:DROP FUNCTION如果EXISTS PersonName; #MySQL返回一个空结果集(即零行).
DELIMITER |; DELIMITER |; DELIMITER |; DELIMITER |; DELIMITER |; DELIMITER |; DELIMITER |;
SQL查询:
DELIMITER |;
MySQL说:文档#1064 - 你的SQL语法有错误; 检查与MySQL服务器版本对应的手册,以便在'DELIMITER |'附近使用正确的语法 在第1行
Bil*_*win 12
之后我会删除分号END.
...
END
|
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
重新评论,在声明新分隔符时不能使用当前分隔符.这听起来令人困惑,但考虑一下你是否这样做:
DELIMITER |;
Run Code Online (Sandbox Code Playgroud)
现在MySQL认为分隔符是"|;" (两个字符,一个管道和一个分号).如果你考虑一下,MySQL客户端DELIMITER 必须以特殊的方式对待它.这是当前分隔符无法遵循的唯一语句.
因此,在将分隔符设置为管道时,请执行以下操作:
DELIMITER |
Run Code Online (Sandbox Code Playgroud)
将其设置回分号时,请执行以下操作:
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
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 ;
Run Code Online (Sandbox Code Playgroud)
尝试这个:
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 ; /* <-- add a space between DELIMITER and the semicolon */
Run Code Online (Sandbox Code Playgroud)