84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
执行mysql存储过程;怎样像o/m数据库抓取出报错信息输出到log表呢?mssql可以直接引用ERROR_MESSAGE()
ERROR_MESSAGE()
查资料只能到查到有错误时赋值变量,应该至少可以抓到个error code啊
DECLARE t_error INT DEFAULT 0; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error = 1;
大家看看怎么实现
业精于勤,荒于嬉;行成于思,毁于随。
declare exit handler for sqlexception
BEGIN rollback;#或者看自己需求 GET DIAGNOSTICS CONDITION 1 # dev.mysql.com/doc/refman/5.7/en/get-diagnostics.html @p2 = MESSAGE_TEXT; insert into tbl_log_info (SINFO,STYPE,STEMP,srun_info) values('proc_','proc_','action',@p2); commit; END;
/开始事物/start transaction;
弄了一下午终于搞定;不得不说mysql的流程控制好差劲!错误发生时经常抓取不到error,code直接赋值null,这样判断事物提交时被坑了一把;文档里的抓取数据影响行数的功能没测通,输出结果始终是0,可能用法也不对吧,没找到正确姿势.
mysql
error
code
null
0
另外推荐个mysql存储过程调试工具dbForge Studio for MySQL使用时记得只在测试库上debug,因为它会给存储过程加代码,在数据库中新建存储调试信息的库.
dbForge Studio for MySQL
debug
declare exit handler for sqlexception
/开始事物/
start transaction;
弄了一下午终于搞定;
不得不说
mysql
的流程控制好差劲!错误发生时经常抓取不到
error
,code
直接赋值null
,这样判断事物提交时被坑了一把;文档里的抓取数据影响行数的功能没测通,输出结果始终是
0
,可能用法也不对吧,没找到正确姿势.另外推荐个
mysql
存储过程调试工具dbForge Studio for MySQL
使用时记得只在测试库上
debug
,因为它会给存储过程加代码,在数据库中新建存储调试信息的库.