84669 personnes étudient
152542 personnes étudient
20005 personnes étudient
5487 personnes étudient
7821 personnes étudient
359900 personnes étudient
3350 personnes étudient
180660 personnes étudient
48569 personnes étudient
18603 personnes étudient
40936 personnes étudient
1549 personnes étudient
1183 personnes étudient
32909 personnes étudient
执行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
,因为它会给存储过程加代码,在数据库中新建存储调试信息的库.