Mysql 獲取存儲過程中的異常信息


GET DIAGNOSTICS CONDITION 1 code = RETURNED_SQLSTATE, msg = MESSAGE_TEXT;

 

delimiter$$
drop procedure if exists do_insert$$
CREATE PROCEDURE do_insert(value INT)
BEGIN
  -- Declare variables to hold diagnostics area information
  DECLARE code CHAR(5) DEFAULT '00000';
  DECLARE msg TEXT;
  DECLARE rows INT;
  DECLARE result TEXT;
  -- 聲明異常處理
  DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
    BEGIN
      -- 獲取異常code,異常信息
      GET DIAGNOSTICS CONDITION 1
        code = RETURNED_SQLSTATE, msg = MESSAGE_TEXT;
    END;

  -- 執行插入語句
  INSERT INTO t1 (int_col) VALUES(value);
  -- 檢查code是否改變,如果改變表示插入異常了
  select code,msg

  IF code = '00000' THEN
    GET DIAGNOSTICS rows = ROW_COUNT;
    SET result = CONCAT('insert succeeded, row count = ',rows);
  ELSE
    -- 復制異常code,異常信息
    SET result = CONCAT('insert failed, error = ',code,', message = ',msg);
  END IF;
  -- 輸入執行結果
  SELECT result;
END$$


call do_insert(1);

 

 

官方文檔:https://dev.mysql.com/doc/refman/5.6/en/get-diagnostics.html

     https://dev.mysql.com/doc/refman/5.7/en/get-diagnostics.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM