在Navicat 中写MySQL存储过程的一个坑

今天在Navicat上写了一个存储过程,然后运行执行都没有什么问题,可是部署执行的时候总是有问题。


后来在navicat上又仔细看了很久。还是没问题,执行了也没问题。


进linux mysql -uxxx -pxxx执行,还是报错:ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' 


很奇怪的一个原因,为什么在mysql命令行执行会报错,而通过navicat软件就没问题了???????



后来突然看到之前有人写的存储过程,看到了一个delimiter // ,看到这个立刻明白怎么回事了。太粗心了。把这个常识给忘了。


写存储过程一定要delimiter  某个标记一下,不然默认情况下mysql遇到分号; 就认为是一个执行标记。


后来添加上delimiter //  ,最后 使用//提交执行,最后在delimiter ;改成提交符号为分号;即可。


没想到navicat执行存储过程的时候,会默认就自动设置delimiter 为其他符号,修改了;为提交符号了。。。


好大的一个坑啊。





你可能感兴趣的:(MySQL)