MySQL分隔符发生错误时?

当您使用带有分号(;)的管道定界符(|)并使用低于8.0.12的MySQL版本时,会出现MySQL定界符。

MySQL将管道(|)视为一个定界符,分号(;)是另一个定界符。因此,请勿将MySQL分隔符与管道以及分号混淆。

注意:这里,我们使用的是MySQL 8.0.12版。管道定界符可以与分号配合使用。如果使用的版本低于8.0.12,则将导致定界符错误。

这是MySQL定界符的工作:

mysql> delimiter |;
mysql> create procedure getSumOfTwoNumbers()
   -> begin
   -> select 2+3 as TotalValue;
   -> end ;
   -> |;
mysql> delimiter ;

现在,使用call命令调用存储过程。查询如下:

mysql> call getSumOfTwoNumbers();

以下是输出:

+------------+
| TotalValue |
+------------+
|          5 |
+------------+
1 row in set (0.00 sec)

不要用分号实现上述管道定界符,因为在MySQL中分号是默认定界符,它在MySQL中告知语句结束。因此,当您编写多条语句时,可以使用分号从MySQL存储过程中获取信息。

这是定界符更改的示例。

首先,使用管道定界符(|)。如果要将定界符设置为管道,请使用以下查询。

mysql> DELIMITER |

创建存储过程的查询如下:

mysql> DELIMITER |
mysql> create procedure Demo()
   -> begin
   -> select 2*3 as TotalMultiplication;
   -> end ;
   -> |

现在用分号更改定界符。如果要将定界符设置为分号,请使用以下查询。

查询如下:

mysql> delimiter ;