我在我的存储过程中使用此代码来获取有关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;
这段代码的问题是即使我知道错误是什么,但它并没有告诉我它出现在哪一行。我的一些sprocs很长。
有没有办法确定导致异常的行号或行是什么?
答案 0 :(得分:0)
您可以尝试rdebug工具来调试存储过程。我没有使用它,但我发现common_schema中的其他工具非常有用。
可能有一个更容易的快速修复方法,可以准确找到这个错误的来源,但是在使用长存储过程时,您可能会发现rdebug在这个错误之外会有所帮助。