MySQL分隔符发生错误时?
当您使用带有分号(;)的管道定界符(|)并使用低于8.0.12的MySQL版本时,会出现MySQL定界符。
MySQL将管道(|)视为一个定界符,分号(;)是另一个定界符。因此,请勿将MySQL分隔符与管道以及分号混淆。
注意:这里,我们使用的是MySQL8.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 ;