2

我在存储过程中使用此代码来获取有关 SQLEXCEPTION 的信息:

  DECLARE EXIT HANDLER FOR SQLEXCEPTION
    BEGIN
        GET DIAGNOSTICS condition 1
        @SQLState = RETURNED_SQLSTATE, @SQLMessage = MESSAGE_TEXT; 
        SELECT CONCAT('Database error occurred, state - ',@SQLState, '; error msg - ', @SQLMessage) INTO @errorString; 

        CALL Collectors_Errors 
        (@errorString, 
        'Collectors_UpdateGame', 
        barcodeApp, 
        usernameApp);
    END;

这段代码的问题是即使我知道错误是什么,它也没有告诉我它发生在哪一行。我的一些存储过程很长。

有没有办法确定导致异常的行号或行是什么?

4

1 回答 1

0

您可以尝试使用rdebug工具来调试存储过程。我没有使用它,但我发现common_schema中的其他工具非常有用。

可能有一种更简单的快速修复方法可以准确地找到这个错误的来源,但是在您使用长存储过程时,您可能会发现 rdebug 在这个错误之外很有帮助。

于 2013-10-24T17:45:38.850 回答