mysql创建存储过程时ERROR 1064 (42000)的解决办法

时间:2022-01-06 22:50:49

转载自:http://blog.chinaunix.net/uid-20263484-id-110165.html


MySql中delimiter的作用是什么?

其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了。
默认情况下,delimiter是分号;。在命令行客户端中,如果有一行命令以分号结束,
那么回车后,mysql将会执行该命令。如输入下面的语句
mysql> select * from test_table;
然后回车,那么MySQL将立即执行该语句。


mysql默认是把;看成是procedure的结束符了,于是procedure便解析失败了。
在声明存储过程之前声明//为结束符
DELIMITER //
然后以//结束存储过程就好了

如果想恢复到之前的;结束,DELIMITER ;便可以了。习惯一般都是用;作为结束符。而create procedure的时候里面会有很多;,所以导致在;回车的时候默认就执行了,而导致错误。

procedure的语法规则:

create procedure sp_name()
begin
.........
end