MySQL在创建存储过程的时候,如创建存储过程,如果使用的是Navicat、DataGrip 等程序创建,代码是下面这样的:
CREATE PROCEDURE xxxx()
BEGIN
selectavg(prod_price) as priceaverage
fromproducts;
END;
但是,有一个海外的数据库,只能通过跳板机,使用命令行连接 Mysql。所以需要在命令行执里面创建存储过程,上述语句在from products;输入之后会报错
ERROR 1064 (42000): You have an error inyour SQL syntax; check the manual that
corresponds to your MySQL server versionfor the right syntax to use near '' a
line 4
原因在于,默认的MySQL语句分隔符为' ; ',在输入' ; '的时候,“以为”语句已经结束了,但实际上语句还没有结束。
解决方案:使用DELIMITER临时改变命令行的语句分隔符,在存储过程创建之后再修改分隔符为原来的" ;
mysql> DELIMITER //
mysql> CREATE PROCEDURE productpricing()
-> BEGIN
-> select avg(prod_price) aspriceaverage
-> from products;
-> END//
这样执行是正常的。
最后,执行下面语句,换回原来的 ';'
mysql> DELIMITER ;