17.00 - 17.05 - SQLSTATEの値を戻す - 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
日本語 (日本)

UDMのパラメータ リストには、SQLSTATE結果コード値を戻すための出力文字列が含まれています。

Cデータ型

SQLSTATE結果コード変数に対応するCデータ型は、次のテーブルのように定義されています。

結果コード変数 Cデータ型
SQLSTATE char sqlstate[6]

SQLSTATEの値

sqlstate出力文字列の最初の5文字は'ccsss'という形式です。ccはクラス、sssはサブクラスです。この文字列の最後の文字は2進ゼロ(Cの文字列終了文字)です。

UDMがSQLSTATE結果コードに対して戻すことができる有効な設定の詳細については、SQLSTATEの値を参照してください。

初期値

sqlstate出力文字列の初期値は00000 (5個の「0」)であり、これは成功条件に相当します。したがって、正常に戻る場合、sqlstate出力引数を設定する必要はありません。

表示形式

UDMが成功以外のSQLSTATE値を戻す場合、BTEQセッションにエラーが表示されます。

SQLSTATEカテゴリ 表示形式
警告以外
*** Failure 7504 in UDF/XSP  databasename.udmname: SQLSTATE  ccsss:
 <text>
条件
  • 7504はTeradataの指定によるユーザー定義関数、ユーザー定義メソッド、および外部ストアド プロシージャのエラー コードです。
  • udmnameは、UDMの名前です。
  • ccsssは、UDMがSQLSTATE出力引数に設定する値であり、SQLSTATEの値のテーブルによるものです。
  • <text>は、UDMがパラメータ スタイルSQLを使用する場合のエラー メッセージ出力引数の値です。
警告
*** Warning: 7505 in UDF/XSP databasename.udmname: SQLSTATE 01H xx:
 <text>
条件
  • 7505はTeradataの指定によるユーザー定義関数、ユーザー定義メソッド、および外部ストアド プロシージャの警告コードです。
  • udmnameは、UDMの名前です。
  • 01H xxは、UDMがSQLSTATE出力引数に設定する値であり、SQLSTATEの値のテーブルに示されている警告カテゴリの値によるものです。
  • <text>は、UDMがパラメータ スタイルSQLを使用する場合のエラー メッセージ出力引数の値です。

例: SQLSTATE結果コードの値を返す

social_security_numberという属性のSTRUCTURED型UDTに対して、インスタンスを実装する次のようなC関数があるとします。

void encrypt( UDT_HANDLE    *personalUdt,
              VARCHAR_LATIN *result,
              char           sqlstate[6])
{
     ...
}

SQLSTATE結果コード値を戻すには、sqlstate引数を使用します。

例えば、UDT引数のsocial_security_number属性値が有効な値でないなら、sqlstate引数の値を次のように設定することにより、データ例外を戻すことができます。

strcpy(sqlstate, "U0005");

BTEQセッションにおいて、この例外は下記の形式で表示されます。

*** Failure 7504 in UDF/XSP employee.encrypt: SQLSTATE U0005:

関連トピック

詳細情報 参照先
警告を使用したメソッドのデバッグ UDMのデバッグのSQL警告を意図的に発生させる。