我曾使用以下代码获取 ERROR_NUMBER 和 ERROR_MESSAGE :
DECLARE EXIT HANDLER FOR SQLException
BEGIN
ROLLBACK/ABORT;
SET ERROR_MESSAGE = TMPMSG;
SET ERROR_NUMBER = SQLCODE;
OPEN cur1;
LEAVE #MAIN#;
END;
更新
DECLARE EXIT HANDLER FOR SQLException
BEGIN
ROLLBACK/ABORT;
GET DIAGNOSTICS EXCEPTION 1 ErrMsg_value = MESSAGE_TEXT ;
SET ErrCode_value = SQLCODE ;
end;
但我也需要以下信息:
ERROR_SEVERITY
ERROR_STATE
ERROR_PROCEDURE
ERROR_LINE
有没有这样做?
答案 0 :(得分:1)
作为异常导致回滚,可能不需要ABORT(除非在某些情况下运行ANSI模式会话)。如果需要,应在GET DIAGNOSTICS之后进行,因为它会重置诊断区域。
ERROR_SEVERITY
:没有严重性(只有BTEQ支持这个概念)ERROR_STATE
,ERROR_PROCEDURE
,ERROR_LINE
:这些变量是SQL Server语法,它们在标准SQL / Teradata SQL中不存在。