teradata SP 中的错误处理

Error handling in teradata SP

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

有办法吗?

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

  • ERROR_SEVERITY:没有严重性(只有BTEQ支持这个概念)
  • ERROR_STATE,ERROR_PROCEDURE,ERROR_LINE:这些变量是SQL服务器语法,它们不存在于标准SQL/Teradata SQL.