1. 程式人生 > >解決儲存過程報錯返回資訊

解決儲存過程報錯返回資訊

作為一名維護過儲存過程的開發人員,被儲存過程的問題定位折磨那是常事。

下面總結一個幫助定位的方法。

儲存過程sp中添加了回滾程式碼

DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
    ROLLBACK;
END;

這樣報錯資料會回滾,但是錯誤資訊卻不能返回,導致定位困難。


mysql提供了一種方式獲取返回的錯誤資訊,新增如下程式碼即可

GET DIAGNOSTICS CONDITION 1 
         @p1 = RETURNED_SQLSTATE, @p2 = MESSAGE_TEXT, @p3 = MYSQL_ERRNO, @p4 = CONSTRAINT_CATALOG, @p5 = CONSTRAINT_SCHEMA
, @p6 = CONSTRAINT_NAME, @p7 = CATALOG_NAME, @p8 = SCHEMA_NAME, @p9 = TABLE_NAME, @p10 = COLUMN_NAME, @p11 = CURSOR_NAME;

insert into ccm_log (create_time,log_info1,log_info2,log_info3,log_info4,log_info5,log_info6,log_info7,log_info8,log_info9,ccm_logcol) 
values(now(),@p1,@p2,@p3,@p4,@p5,@p6,@p7,@p8,@p9,@p10);

其中ccm_log是自己定義的一個表格,主要是和上面返回的錯誤資訊進行記錄。