SQL実行時にXDBでリターンコード(SQLCODE)が設定されます。ただし,DECLARE CURSORのような宣言文の場合は,リターンコードが設定されません。リターンコードを参照する場合の変数名称を次に示します。
SQLCODE変数の設定値を参照することで,SQL文の実行状態が判定できます。
SQL文の実行状態と変数に設定される値の関係を次の表に示します。
表1-23 SQL文の実行状態と変数に設定される値の関係
項番 | SQL文の実行状態 | SQLCODE変数の値 | SQLWARN0の値 | SQLWARN6の値 | |
---|---|---|---|---|---|
1 | 正常終了 | 警告なし | 0 | '△' | '△' |
2 | 警告あり※ | 0 | 'W' | '△' | |
3 | データなし | 100 | '△' | '△' | |
4 | エラー終了 | 中断状態なし | 0より小さい | '△'または'W'※ | '△' |
5 | 中断状態発生 | 0より小さい | 'W' | 'W' |
リターンコードの判定例を次に示します。
検索する行がなくなったと判定します。
特に次に示す内容を判定するときに有効です。
SQLエラーが発生したと判定します。
SQLエラーが発生した場合,中断状態になる場合とならない場合があります。SQLWARN6='W'の場合,暗黙的にデータベースへの更新が無効にされて中断状態になったと判定します。
正常終了したと判定します。
正常終了には,警告情報がある場合とない場合があります。SQLWARN0='W'の場合,警告付き正常終了と判定します。
エラーを検知した場合,次に示す順番で対処します。
表1-24 リターンコードの付加情報と参照先
項番 | 付加情報 | 参照先 |
---|---|---|
1 | SQLCODEに対応するメッセージ | SQL連絡領域中のSQLERRML領域,およびSQLERRMC領域の内容 |