今天写了一个下午的mysql 存储过程,效率真的慢得像蜗牛。
第一 mysql存储过程跟之前写SqlServer 2005 的存储过程有点区别;
第二,用的mysql第三方企业管理器 SQLyogEnt.exe 调试的时候,写存储过程和一般的查询语句要分开的,我是后来才意识到的,气得要命(可能也是用SqlServer 2005企业管理器的编辑器的习惯导致的)。 废话少说,写存储过程,要注意如下几点:
第一 要定义DELIMITER //,意思是用//作为一段语句的结束符(这个很重要,我写的存储过程语法一点也没错,但是,就是通不过,原来分号:;分隔符是通知MySQL客户端已经输入完成的符号,而我的存储过程里边很多都有分号;结果运行的时候,就是把我一段存储过程分成很多段执行)
第二 如果你想我一样“不幸”选择了第三方mysql客户端SQLyogEnt.exe ,一定要在数据库目录里边的存储过程右键选择新建存储过程,然后在右边弹出的窗口里键入你的存储过程语句,在普通查询分析器输入无效,这是惨痛教训
第三,如果存储过程的参数如果是输入中文的话,要在定义存储过程的后面加上character set gbk这个编码,不然调用存储过程使用中文参数的时候会出错,如:
CREATE PROCEDURE CountPro(OUT a_out INT,in b_date date, in unit_name varchar(45) character set gbk)