17.00 - 17.05 - Teradataアプリケーション クラスから返された例外のチェック - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQL外部ルーチン プログラミング

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Published
2020年6月
Content Type
プログラミング リファレンス
Publication ID
B035-1147-170K-JPN
Language
日本語 (日本)

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アプリケーション クラスを参照してください。