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> 条件
|
警告 | *** Warning: 7505 in UDF/XSP databasename.udmname: SQLSTATE 01H xx: <text> 条件
|
例: 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警告を意図的に発生させる。 |