在MySql中执行插入/更新时出错

时间:2015-04-23 06:26:30

标签: mysql

我想捕获在mysql存储过程中插入或更新数据时发生的错误。

在DB中更新数据时,无法检查修改的行是否成功更新或插入,但即使受影响的行为0(同一数据再次更新),也可能不是错误条件

我想捕获只有插入/更新失败。 请分享相同的内容

我的Sp就像下面的

DELIMITER $$

    CREATE PROCEDURE `sp_test`(
            IN param1 VARCHAR(50), 
            IN param2 VARCHAR(50)
        )
        BEGIN
            IF updateCount > 0 THEN
                UPDATE tbname SET val = param1 where con = param2;
            ELSE
                INSERT INTO tbname SET val = param1,con = param2;
            END IF;

        END$$

DELIMITER ;

我想跟踪语句是否成功执行。

1 个答案:

答案 0 :(得分:-1)

我添加了一个异常块,如下所示,

DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
    GET DIAGNOSTICS CONDITION 1 @sqlstate = RETURNED_SQLSTATE, 
    @errno = MYSQL_ERRNO, @text = MESSAGE_TEXT;
    SET @full_error = CONCAT("ERROR ", @errno, " (", @sqlstate, "): ", @text);
    SELECT @full_error;
END;

不,我收到了错误。我认为这对我的情况来说没问题。如果有人找到更好的答案,请在此处发帖。