Java外部ルーチンからの例外処理 - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/qwr1571437338192.ditamap
dita:ditavalPath
ja-JP/qwr1571437338192.ditaval
dita:id
B035-1147
Product Category
Software
Teradata Vantage

Teradata DatabaseがJava外部ルーチンから例外を受け取ったときに適用される処理ルールは次のとおりです。

例外のクラス 结果
SQLExceptionではない場合 Teradata DatabaseはSQLSTATEの値として38000を返します。例は次のとおりです。
*** Failure: Statement = 1  Info 0
      Code 7828: Unexpected Java Exception SQLSTATE 38000:
An java.lang.NullPointerException exception was thrown.

この状態は、一般に外部ルーチンで例外を取得できなかった場合に起こります。

SQLExceptionの場合 SQLStateフィールドが5桁であれば、最初の2桁は38となり、Teradata DatabaseはSQLSTATE値を返します。サンプルは次のとおりです。
SEL o_id, std_dev(o_amount);
FROM orders;

*** Failure 7825 in UDF/XSP/UDM UDFExample.std_dev:
SQLSTATE 38U01:  User Exception Text.

これは、UDFから正しく返されたエラーと考えられます。

SQLStateフィールドが範囲外の場合、Teradata DatabaseはSQLSTATEの値として39001を返します。サンプルは次のとおりです。

SEL o_id, std_dev(o_amount);
FROM orders;

*** Failure 7827 Java SQL Exception SQLSTATE 39001: Invalid
SQL state (45100).