teradata SP中的错误处理

时间:2017-11-07 07:58:57

标签: error-handling exception-handling teradata

我曾使用以下代码获取 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

有没有这样做?

1 个答案:

答案 0 :(得分:1)

作为异常导致回滚,可能不需要ABORT(除非在某些情况下运行ANSI模式会话)。如果需要,应在GET DIAGNOSTICS之后进行,因为它会重置诊断区域。

  • ERROR_SEVERITY:没有严重性(只有BTEQ支持这个概念)
  • ERROR_STATEERROR_PROCEDUREERROR_LINE:这些变量是SQL Server语法,它们在标准SQL / Teradata SQL中不存在。