admin管理员组

文章数量:1599543

获取存储过程中的报错信息,返回给应用程序,便于排查问题。网上参考了很多,折腾了好久,没解决实际问题,最后根据官方文档(MySQL :: MySQL 8.0 Reference Manual),找了个样例代码,成功解决了问题。样例代码如下:

查看官方文档很重要

CREATE DEFINER=`user_name`@`%` PROCEDURE `do_insert`(v_comp_id int,v_shop_id int)
    DETERMINISTIC
BEGIN
  -- Declare variables to hold diagnostics area information
  DECLARE code CHAR(5) DEFAULT '00000';
  DECLARE msg TEXT;
  DECLARE nrows INT;
  DECLARE result TEXT;
  -- Declare exception handler for failed insert
  DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
    BEGIN
      GET DIAGNOSTICS CONDITION 1
        code = RETURNED_SQLSTATE, msg = MESSAGE_TEXT;
    END;

  -- Perform the insert
  INSERT INTO t1 (int_col) VALUES(value);
  -- Check whether the insert was successful
  IF code = '00000' THEN
    GET DIAGNOSTICS nrows = ROW_COUNT;
    SET result = CONCAT('insert succeeded, row count = ',nrows);
  ELSE
    SET result = CONCAT('insert failed, error = ',code,', message = ',msg);
  END IF;
  -- Say what happened
  SELECT result;
END

本文标签: 报错过程中信息mysqlDiagnostics