Error handling teradata SP中的错误处理

Error handling teradata SP中的错误处理,error-handling,exception-handling,teradata,Error Handling,Exception Handling,Teradata,我曾经使用以下代码获取错误号和错误消息: 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 S

我曾经使用以下代码获取错误号错误消息

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

是否仍要执行此操作?

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

  • 错误\u严重性
    :没有严重性(只有BTEQ支持此概念)
  • ERROR\u STATE
    ERROR\u PROCEDURE
    ERROR\u LINE
    :这些变量是SQL Server语法,在标准SQL/Teradata SQL中不存在

什么是
TMPMSG
?只有
SQLCODE
是内置变量。您最好使用
GET DIAGNOSTICS
获取错误信息。好的,请查看更新的内容。就像这样?谢谢@dnoeth:)