Teradataでは外部ルーチンが使用する必要性のあるいくつかのアプリケーション クラスが提供されています。Teradataアプリケーション クラス用に定義されたメソッドは、SQLStateフィールドの値がTS000となる場合にSQLExceptionをスローすることによって、Teradata特有のエラーを返す場合があります。
SQLStateがTS000 (Teradata特有の状態)となっている場合は、それに関連してTeradata特有のエラー コードがありますので、留意してください。このエラー コードにはSQLExceptionクラスのgetError()メソッドを使ってアクセスできます。実装の詳細としてのみですが、これらのエラー コードは、通常のTeradataのエラー コードやエラー テキストと同様にして割り当てられます。
次のサンプル コードは、Tblクラスを使って例外を処理する例です。
public static void ExceptionCatch() { try { int len = Tbl.getScale(); /* Throws an SQLExeception. */ } catch (SQLException e) { if (e.getSQLState().equals("TS000")) { /* Check Teradata exception.*/ int TeradataCode = e.getErrorCode(); /* Get specific error. */ } } }
外部ルーチンがTS000となったSQLExceptionを処理できない場合、SQLSTATEの値として39001が返されます。次の出力は、TblクラスのgetScale()メソッドが例外をそれを処理できないUDFテーブルに返す例です。
*** Failure 7827 Java SQL Exception SQLSTATE 39001: Invalid SQL state (TS000 [Error 7850]: Tbl.getScale(int) is invalid for the type of column intended).
Teradataアプリケーション クラスが返すことのあるエラー コードの詳細については、Javaアプリケーション クラスを参照してください。