返回第一个错误的mysql错误处理

anauzrmj  于 2021-06-20  发布在  Mysql
关注(0)|答案(0)|浏览(238)

我查看了这里的帖子和mysql手册,得到了部分答案。
问:我有一些可能导致错误的查询,我想处理它们,并有一个消息,说明发生的第一个错误+行号+回滚(如果有错误)。
我的答案是:
返回代码和错误消息。
如果出现错误,则回滚所有查询。
我没有答案的那部分
第一个错误(代码返回最后一个错误)。
行号。
我知道代码中有一些错误,因为我从一个站点得到了每个部分,并将它们混合在一起
代码:

DELIMITER $$

CREATE PROCEDURE prod()
BEGIN
    DECLARE is_rolback BOOL DEFAULT 0;
    DECLARE resultError TEXT;
    DECLARE errorCode CHAR(5) DEFAULT '00000';
    DECLARE errorMsg TEXT;
    DECLARE ErrorRows INT;

    DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
    BEGIN
        GET DIAGNOSTICS CONDITION 1
        errorCode = RETURNED_SQLSTATE, errorMsg = MESSAGE_TEXT;
        SET is_rolback = 1;
    END;

    START TRANSACTION;
    SET autocommit = 0;

-- The codes for checking the errors possible
-- Start
    insert into table1 values (2, 'B'); -- Correct
    insert into table1 values (1, 'A'); -- Error id 1 is already in database;
    insert into table1 values ('C');    -- Error should pass also the ID
-- End  

    IF is_rolback THEN
        ROLLBACK;
        GET DIAGNOSTICS ErrorRows = ROW_COUNT;
        SET resultError = CONCAT('Failed, error = ',errorCode,', line = ', ErrorRows, ', message = ',errorMsg);
        select resultError;

        select * from table1;
    ELSE
        COMMIT;
    END IF;
END$$

DELIMITER ;

CALL prod();

DROP PROCEDURE IF EXISTS prod;

输出:

Failed, error = 21S01, line = 0, message = Column count doesn't match value count at row 1
id      name
1       A

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题