springboot如何判斷mysql故障:1、拋出的異常為非運行時異常:2、try -catch 將異常捕捉:3、需要執行事務的方法發生了代理,代理沒有向上拋出異常:4、多線程狀態下,運行同一段需要執行事務的代碼。

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:域名申請、虛擬空間、營銷軟件、網站建設、五寨網站維護、網站推廣。
mysql存儲過程也提供了對異常處理的功能:通過定義HANDLER來完成異常聲明的實現
DROP PROCEDURE IF EXISTS sp_call_jobs;
CREATE PROCEDURE sp_call_jobs()
NOT DETERMINISTIC
SQL SECURITY DEFINER
COMMENT ''
BEGIN
declare _row,_err,_count int default 0;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION,SQLWARNING,NOT FOUND set _err=1;
while _row3 DO
START TRANSACTION;
insert into t1(cond_val)values(null);
COMMIT;
if _err=1 then
set _count=_count+1;
end if;
set _row=_row+1;
end while;
select _count;
END;
/**語句
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION,SQLWARNING,NOT FOUND set _err=1;
作用是當遇到SQLEXCEPTION,SQLWARNING,NOT FOUND 錯誤時,設置_err=1并執行CONTINUE操作,即繼續執行后面的語句.
這就與c#中的try catch語法很像。
而且在執行可能出錯的語句的時候我們用事務語句:START TRANSACTION; …… COMMIT; 可以保證完整性。
**/
DECLARE處理程序的使用:
DECLARE handler_type HANDLER FOR condition_value[,...] sp_statement
其中,
handler_type的取值范圍:CONTINUE | EXIT | UNDO
condition_value的取值范圍:SQLSTATE [VALUE] sqlstate_value | condition_name | SQLWARNING | NOT FOUND | SQLEXCEPTION | mysql_error_code
這個語句指定每個可以處理一個或多個條件的處理程序。如果產生一個或多個條件,指定的語句被執行。?對一個CONTINUE處理程序,當前子程序的執行在執行處理程序語句之后繼續。對于EXIT處理程序,當前BEGIN...END復合語句的執行被終止。UNDO 處理程序類型語句還不被支持。
· ? SQLWARNING是對所有以01開頭的SQLSTATE代碼的速記。
· ? ?NOT FOUND是對所有以02開頭的SQLSTATE代碼的速記。
· ? ?SQLEXCEPTION是對所有沒有被SQLWARNING或NOT FOUND捕獲的SQLSTATE代碼的速記。
注:除了SQLSTATE值,MySQL錯誤代碼也不被支持。
例:
[sql]?view?plain?copy?print?
delimiter?$$??
CREATE?TABLE?`_t1`?(??
`id`?int(11)?NOT?NULL?AUTO_INCREMENT,??
`val1`?varchar(20)?DEFAULT?NULL,??
`val2`?int(11)?DEFAULT?NULL,??
PRIMARY?KEY?(`id`)??
)?ENGINE=InnoDB?AUTO_INCREMENT=113?DEFAULT?CHARSET=latin1$$
[sql]?view?plain?copy?print?
DELIMITER?$$??
CREATE?DEFINER=`abandonship`@`%`?PROCEDURE?`P_TestException`()??
BEGIN??
declare?_var,_err?int?default?0;??
declare?continue?handler?for?sqlexception,?sqlwarning,?not?found?set?_err=1;??
insert?into?_t1(val1,?val2)?value(2012,'abandonship');??
if?_err=1?then??
set?_var?=?2;??
end?if;??
select?case?when?_var?=?2?then?'出錯了'?else?_var?end;
調用該存儲過程將返回:出錯了
當前題目:mysql怎么捕獲異常 mysql存儲過程異常捕獲
標題網址:http://www.yijiale78.com/article10/doddggo.html
成都網站建設公司_創新互聯,為您提供外貿網站建設、品牌網站制作、企業建站、全網營銷推廣、小程序開發、微信公眾號
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯