何时会出现 MySQL 分隔符错误?

mysqlmysqli database

当您使用管道分隔符 (|) 和分号 (;) 并使用低于 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 ;
   -> |;
Query OK, 0 rows affected (0.17 sec)
mysql> delimiter ;

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

mysql> call getSumOfTwoNumbers();

输出结果如下:

+------------+
| TotalValue |
+------------+
|          5 |
+------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.01 sec)

不要使用分号来实现上述管道分隔符,因为在 MySQL 中,分号是默认分隔符,表示 MySQL 语句的结束。因此,当您编写多个语句时,可以使用分号从 MySQL 存储过程中返回。

以下是分隔符更改的示例。

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

mysql> DELIMITER |

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

mysql> DELIMITER |
mysql> create procedure Demo()
   -> begin
   -> select 2*3 as TotalMultiplication;
   -> end ;
   -> |
Query OK, 0 rows affected (0.12 sec)

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

查询如下:

mysql> delimiter ;

相关文章