UDFがSQL結果コードを処理する方法 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 詳細トピック

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
ft:locale
ja-JP
ft:lastEdition
2021-03-30
dita:mapPath
ja-JP/jpx1556733107962.ditamap
dita:ditavalPath
ja-JP/jpx1556733107962.ditaval
dita:id
B035-1184
Product Category
Software
Teradata Vantage

UDFはユーザー作成アプリケーションなので、ユーザー作成コードによってすべての成功、警告、および例外メッセージを生成する必要があります。

ANSI SQL:2011規格は、状況コード メッセージを受け入れるSQLSTATEという名前の戻りコード変数を定義しています。すべての条件メッセージは、この変数に標準ASCII文字列形式で返されます。

すべてのSQLSTATEメッセージの長さは5文字です。最初の2文字はメッセージ クラスを定義し、最後の3文字はメッセージ サブクラスを定義します。

例えば、SQLSTATE戻りコード'22021'の場合を考察します。このメッセージのクラス22は、データ例外条件を示します。サブクラス021は、定義済みの目録に含まれていない文字が検出されたことを示します。

SQL警告はしリクエストをアボートないが、SQL例外はリクエスト アボートをしたことに注意する必要があります。

UDFは保護モードで実行します。そうしないと、データベースが関数によって生成されるエラーをトラップせず、システム エラーが発生する場合があります。詳細については、非保護モードを指定するべき状況を参照してください。

UDFが常に有効なSQLSTATEコードを返すことを確認してください。データベースは、ユーザー定義関数によって返されるSQLSTATE値を相当するSQLCODE値にマップしません。UDFによって生成されるすべてのSQLSTATEコードは、以下の表が示すとおり、データベースのメッセージに明示的にマップされます。

UDF SQLの戻りコード エラー メッセージ 説明
警告 7505 *** Warning 7505 in dbname.udfname: SQLSTATE 01Hxx: < user function message text >
例外 7504 *** Error 7504 in dbname.udfname: SQLSTATE U0xxx: < user function message text >

user function message text>で表わされる文字列は、UDFによって生成されるユーザー定義エラー メッセージです。

SQLSTATEサブクラス内のx文字でテーブルわされるテキストも、ユーザー作成のUDFコードによって割り当てられます。すべての文字は、数字またはラテン文字の大文字でなければなりません。

UDFのコード化の詳細については、<Teradata Vantage™- SQL外部ルーチン プログラミング、B035-1147>を参照してください。

SQLの例外および警告コードの詳細について、<Teradata Vantage™ - SQLの基本、B035-1141>を参照してください。

SQLSTATEおよびSQLCODEの詳細については、<Teradata Vantage™ - SQLストアド プロシージャおよび埋め込みSQL、B035-1148>を参照してください。