最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL存儲過程中一些基本的異常處理教程

 更新時間:2015年12月09日 14:52:19   作者:crazylaa  
這篇文章主要介紹了MySQL存儲過程中一些基本的異常處理教程,其中rollback命令的使用需要謹慎一些,需要的朋友可以參考下

有時候,不希望存儲過程拋出錯誤中止執(zhí)行,而是希望返回一個錯誤碼。 Mysql 支持異常處理,通過定義 CONTINUE/EXIT 異常處理的 HANDLER 來捕獲 SQLWARNING/NOT FOUND/SQLEXCEPTION (警告 / 無數(shù)據(jù) / 其他異常)。其中, FOR 后面可以改為 SQLWARNING, NOT FOUND, SQLEXCEPTION 來指示所有異常都處理,相當于 oracle 中的 others 。例如,當不進行異常處理時,以下代碼將直接拋出一個 ERROR 1062 (23000) 錯誤:

CREATE PROCEDURE test_proc_ins1(
     IN i_id INT,
     IN i_name VARCHAR(100)
)
BEGIN
     INSERT INTO testproc VALUES (i_id,i_name);
     INSERT INTO testproc VALUES (i_id,i_name);
END;

經(jīng)過異常處理后,可以避免拋出錯誤,而是定義一個返回參數(shù) o_ret 賦予特殊值來表示失敗,這樣,比如在 java 代碼中,可以通過獲取返回值而不是捕獲異常的方式來處理業(yè)務邏輯。例如將返回值設置為 -1:

CREATE PROCEDURE test_proc_ins1(
     IN i_id INT,
     IN i_name VARCHAR(100),
     OUT o_ret INT)
BEGIN
     DECLARE EXIT HANDLER FOR SQLSTATE '23000' set o_ret = -1;
-- 也可以這樣使用:
-- DECLARE EXIT HANDLER FOR SQLWARNING,NOT FOUND,SQLEXCEPTION set o_ret=-1;
     INSERT INTO testproc VALUES (i_id,i_name);
     INSERT INTO testproc VALUES (i_id,i_name);
     set o_ret = 1;
END;

當然,對于特定的SQL語句,也可以指定比如主鍵沖突,就rollback;

DECLARE exit HANDLER FOR SQLSTATE '23000'

delimiter //

CREATE PROCEDURE TEST()
BEGIN
DECLARE exit HANDLER FOR SQLEXCEPTION,SQLWARNING,NOT FOUND
begin
rollback;
insert into bb values('error');
end;
START TRANSACTION;
INSERT INTO aa VALUES (1);
INSERT INTO aa VALUES (2);
COMMIT;
END;
//

CALL test()//

相關文章

  • MySQL的查詢緩存機制基本學習教程

    MySQL的查詢緩存機制基本學習教程

    這篇文章主要介紹了MySQL的查詢緩存機制基本學習教程,默認針對InnoDB存儲引擎下來將,需要的朋友可以參考下
    2015-11-11
  • 解讀mysql的for update用法

    解讀mysql的for update用法

    這篇文章主要介紹了解讀mysql的for update用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Mysql雙主搭建的方法步驟

    Mysql雙主搭建的方法步驟

    本文主要介紹了Mysql雙主搭建的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • MySQL查看和修改字符編碼的實現(xiàn)方法

    MySQL查看和修改字符編碼的實現(xiàn)方法

    下面小編就為大家?guī)硪黄狹ySQL查看和修改字符編碼的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • 解析如何使用Zend Framework 連接數(shù)據(jù)庫

    解析如何使用Zend Framework 連接數(shù)據(jù)庫

    本篇文章是對如何使用Zend Framework 連接數(shù)據(jù)庫的方法進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • mysql 5.5.27 winx64安裝配置方法圖文教程

    mysql 5.5.27 winx64安裝配置方法圖文教程

    這篇文章主要為大家詳細介紹了mysql5.5.27 winx64安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • mysql 數(shù)據(jù)匯總與分組

    mysql 數(shù)據(jù)匯總與分組

    這篇文章主要介紹了mysql 數(shù)據(jù)匯總與分組,我們經(jīng)常需要匯總數(shù)據(jù)而不用把它們實際檢索出來,為此MySQL提供了專門的函數(shù)。使用這些函數(shù),MySQL查詢可用于檢索數(shù)據(jù),以便分析和報表生成。下面來看看具體例子,需要的朋友可以參考一下
    2021-10-10
  • 分析mysql中一條SQL查詢語句是如何執(zhí)行的

    分析mysql中一條SQL查詢語句是如何執(zhí)行的

    為了充分發(fā)揮MySQL的性能并順利地使用,就必須正確理解其設計思想,因此,了解MySQL的邏輯架構(gòu)是必要的。本文將通過一條SQL查詢語句的具體執(zhí)行過程來詳細介紹MySQL架構(gòu)中的各個組件
    2021-06-06
  • 詳解MySQL事務日志redo log

    詳解MySQL事務日志redo log

    你知道MySQL 中是如何保證數(shù)據(jù)不丟失的嗎,即便是MySQL發(fā)生異常重啟了,數(shù)據(jù)也可以恢復,你了解MySQL產(chǎn)生的事務日志redo log是干嘛的嗎,明白它的工作機制嗎,本文就給大家詳細講解MySQL事務日志redo log
    2023-07-07
  • MySQL數(shù)據(jù)庫內(nèi)置函數(shù)使用說明

    MySQL數(shù)據(jù)庫內(nèi)置函數(shù)使用說明

    這篇文章主要給大家介紹了關于MySQL數(shù)據(jù)庫內(nèi)置函數(shù)使用說明的相關資料,MySQL提供了多種內(nèi)置函數(shù)來實現(xiàn)不同的功能,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-12-12

最新評論

五家渠市| 星子县| 仙游县| 左云县| 仙桃市| 连江县| 大安市| 永嘉县| 上犹县| 汝阳县| 抚松县| 枣阳市| 胶州市| 遂川县| 济宁市| 珲春市| 托里县| 宜章县| 徐州市| 林西县| 岑巩县| 五华县| 阿巴嘎旗| 大埔区| 荣成市| 广西| 阳东县| 军事| 长葛市| 华亭县| 湘潭市| 江山市| 吉隆县| 三亚市| 广河县| 齐河县| 墨玉县| 当涂县| 麻栗坡县| 武夷山市| 北京市|