存储过程调试方法
参考
调试非常麻烦
如何在存储过程中注释?
在存储过程编辑中无法注释,所以需要先将代码拷贝到普通查询页,在查询页注释好,然后再将代码拷贝回存储过程中,保存。
变量定义
定义varchar变量必须指明大小
如varchar(10),否则会报错
游标需要定义在所有其他变量之后,否则会报 1337 错误
ERROR 1337 (42000): Variable or condition declaration after cursor
变量的定义不要和你的select的列的键同名!不然,fetch into 会失败!
这个没试,但是名字最好不要和列名同名,这样也更易读。
语法方面
存储过程中一定要记得在语句后面加上分号“;”,否则会报看起来莫名其妙的错误
调试技巧:可以使用 SELECT @a 查看打印的变量,但是注意 @a看到的是最终的变量,中间变量是无法看到的
使用 SELECT @a看到的结果中的 @a 值是最终值,中间变量是无法看到的,所以说调试非常麻烦,无法打印变量在运行中间的值
★调试的技巧
也是定位错误的方法(因为根据提示的错误很难定位到错误的语句位置):删除无关的语句,排除的方法。
边开发边测试:(1)设计好整体思路;(2)将思路框架写出来,先不要填充细节部分,比如有的复杂的实现,可以先空着或者简单的打印一些变量,边写边测,及时发现各种问题;(3)思路框架写出来后,如果测试没有问题,再补充细节代码,最好写一部分就测试一下。因为调试太麻烦的原因,这样比较稳妥。
游标的使用
参考
使用
游标需要定义在所有其他变量之后,否则会报 1337 错误
如何循环?
如何结束?
如何调试?调试非常麻烦
游标使用示例存储过程1
背景说明
将表t中的数据拷贝至表t1
建表语句
-- ----------------------------
-- Table structure for t
-- ----------------------------
DROP TABLE IF EXI