我想捕获在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 ;
我想跟踪语句是否成功执行。
答案 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;
不,我收到了错误。我认为这对我的情况来说没问题。如果有人找到更好的答案,请在此处发帖。