スケーラブルデータベースサーバ HiRDB Version 8 UAP開発ガイド
SQL実行時にHiRDBシステムでリターンコード(SQLCODE,及びSQLSTATE)が設定されます。ただし,DECLARE CURSORのような宣言文の場合は,リターンコードが設定されません。リターンコードを参照する場合の変数名称は,次のとおりです。
SQLCODE変数,及びSQLSTATE変数の設定値を参照することで,SQL文の実行状態が判定できます。
SQL文の実行状態と変数に設定される値の関係を次の表に示します。
SQL文の実行状態 | SQLCODE変数の値 | SQLWARN0の値 | SQLWARN6の値 | SQLSTATE変数の値 | |
---|---|---|---|---|---|
正常終了 | 警告なし | 0 | '△' | − | '00000' |
警告付き※4 | 0 | 'W' | − | '01nnn'※1 (nnn≠R00) |
|
>0(≠100,110) | − | − | 'R01R00' | ||
データなし※3 | 110 | − | − | 'R2000' | |
データなし | 100 | − | − | '02000' | |
エラー終了 | 暗黙的ロールバックなし | -1〜-1999 | − | '△' | 'mmnnn'※2 |
暗黙的ロールバックあり | -1〜-1999 | 'W' | 'W' | '40nnn'※1 |
表3-29 警告付き正常終了の場合のSQLSTATE,SQLCODE,及びSQLWARNOの値の関係
SQLSTATEの値 | SQLCODEの値 | SQLWARNOの場合 |
---|---|---|
01nnn(nnn≠R00) | 0 | 'W' |
01R00 | 100以外の正数 | 空白,又は'W' |
検索する行がなくなったことを判定します。
特に次に示す内容を判定するときに有効です。
SQLエラーが発生したと判定します。
SQLエラーが発生した場合,暗黙的にロールバックされる場合とされない場合があります。SQLWARN6='W',又はSQLSTATE='40nnn'の場合,暗黙的にロールバックしたと判定します。
なお,エラーが発生したSQLを特定したい場合,SQLトレース情報を参照します。SQLトレース情報の内容については,「11.1.1 SQLトレース機能」を参照してください。
正常終了したと判定します。
正常終了には,警告情報がある場合とない場合があります。SQLWARN0='W',若しくはSQLCODEが100以上の正の値,又はSQLSTATE='01nnn'の場合,警告付き正常終了と判定します。
リストを使用した検索の場合,データなしの正常終了(リスト作成時にあった行が削除された)の可能性があります。SQLCODEが110,又はSQLSTATEが'R2000'ならば,データなしの正常終了と判断して,検索行に対する処理をスキップする必要があります。
警告付き正常終了の内容については,表3-29を参照してください。
エラーを検知した場合,次に示す1〜4の順番で対処します。
表3-30 リターンコードの付加情報と参照先
付 加 情 報 | 参 照 先 |
---|---|
SQLCODEに対応するメッセージ※ | SQL連絡領域中のSQLERRMLフィールド,及びSQLERRMCフィールドの内容 |
分散システム使用時の自RDノードでのエラーかそれ以外のエラーかを区別するための情報 | SQL連絡領域中のSQLCAIDEフィールドの内容 |
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.