当前位置: 首页 > 面试题库 >

mysql分隔符错误

东门楚
2023-03-14
问题内容

已修改。

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 ;

此代码有什么问题?我得到以下错误。

您的SQL查询中似乎有一个错误。下面的MySQL服务器错误输出(如果有的话)也可以帮助您诊断问题

错误:未知的标点字符串@ 102 STR:|; SQL:如果存在PersonName,则执行DROP功能;#MySQL返回空结果集(即零行)。

DELIMITER |; DELIMITER |; DELIMITER |; DELIMITER |; DELIMITER |; DELIMITER
|; DELIMITER |;

SQL查询:

DELIMITER |;

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命令定界符,以便可以在其中创建包含多个命令的过程。但是,在MySQL 5.1.47上似乎无法识别delimiter命令。我在MySQL 5.0.91上对其进行了测试,并且确实在其中工作。 在两种情况下,我都试图从phpmyadmin运行此程序。不能选择使用5.0.91,因为我需要使用事件()。 错误信息: 是否有原因不起作用,或者有其他方法可以完成同一件事(创建

  • 问题内容: 我经常看到人们在使用定界符。我试图找出什么是分隔符,以及它们的目的是什么。谷歌搜索20分钟后,我找不到能满足我要求的答案。所以,我现在的问题是:什么是分隔符,何时应使用它们? 问题答案: 在定义函数,存储过程和触发器(其中必须定义多个语句)时,通常使用默认值以外的分隔符 。您可以定义一个不同的定界符,例如,该定界符用于定义整个过程的结尾,但是在其中,每个单独的语句均以终止。这样,当代码

  • 我尝试在phpmyadmin/MySQL中使用以下SQL添加此函数 但我有一个错误: 错误 如何修复此错误??

  • 我想从MySQL中的字符串中提取子字符串。该字符串包含多个子字符串,子字符串之间用逗号(',')分隔。我需要使用任何MySQL函数提取这些子字符串。 例如: 我想选择颜色字段并提取红色、黄色和绿色的子字符串,用逗号分隔。

  • 问题内容: 我想从MySQL中的字符串中提取子字符串。该字符串包含多个子字符串,以逗号(’,’)分隔。我需要使用任何MySQL函数提取这些子字符串。 例如: 我想选择颜色字段并将子字符串提取为红色,黄色和绿色,并以 逗号 分隔。 问题答案: 可能的重复:将值从一个字段拆分为两个 不幸的是,MySQL没有拆分字符串功能。如上面的链接所示,有用户定义的分割功能。 下面是获取数据的更详细的版本:

  • 但ibatis会抛出以下错误: ...执行时出错:delimiter//drop函数if存在get_next_value_test//create函数get_next_value_test(p_name varchar(30))返回int deterministic sql security invoker begin declare current_val integer。原因:com.mysq