18.1.5 SQL文のエラー判定と対処方法
APで実行したSQL文が正常に実行されたかどうかを判定する必要があります。ここでは,SQL文が正常に実行されたかどうかを判定する方法と,エラーを検出した場合の対処方法について説明します。
- 〈この項の構成〉
(1) SQL文のエラー判定方法
SQL文が実行されると,CLI関数の戻り値としてSQLCODEが返却されます。返却されたSQLCODEの値によってSQL文が正常に実行されたかどうかを判定します。SQLCODEの値とその意味を次の表に示します。
項番 |
SQLCODEの値 |
意味 |
---|---|---|
1 |
100 |
検索する行がなくなったことを意味しています。特に,次に示すことを判定するときに有効です。
|
2 |
1 |
SQL文の処理は終了しましたが,処理の延長で警告が発生したことを意味しています。発生する警告を次に示します。
|
3 |
負の値 |
SQLエラーが発生したことを意味しています。 |
4 |
上記以外 |
SQL文が正常に実行されたことを意味しています。 |
CLI関数の戻り値については,「19.8 CLI関数の戻り値」を参照してください。
(2) エラー検出時の対処方法
SQL文のエラーを検出した場合,次に示す順序で対処します。なお,ここではCLI関数を使用した場合の例について説明します。
(a) 戻り値の出力
CLI関数の戻り値を出力,または表示します。
(b) エラーへの対処
SQL文を使用したデータ操作でエラーが発生した場合,次に示す手順で対処してください。
手順
-
SQL結果情報のメンバisInConnectの値を判定します。isInConnectの値によって対処方法が次のように異なります。
-
isInConnectの値がa_rdb_SQL_IS_IN_CONNECTの場合
手順の2に進んでください。
-
isInConnectの値がa_rdb_SQL_IS_NOT_IN_CONNECTの場合
致命的なエラーが発生したため,APがHADBサーバから切り離されました。クライアントメッセージログファイルに出力されたメッセージを確認し,HADBサーバが異常終了している場合は,HADB管理者に連絡してください。
-
-
SQL結果情報のメンバEndTranの値を判定します。EndTranの値によって対処方法が次の表に示すように異なります。
項番
EndTranの値
対処方法
1
a_rdb_SQL_ROLLBACKED
内部的にロールバックが発生したため,HADBサーバからの切り離しを行ってAPを終了してください。そのあと,戻り値を参考にエラーの対策を行ってください。
2
a_rdb_SQL_TRAN_NOT_ENDED
ROLLBACKを実行してトランザクションを取り消してから,HADBサーバからの切り離しを行いAPを終了してください。そのあと,戻り値を参考にエラーの対策を行ってください。
3
上記以外の場合
HADBサーバからの切り離しを行ってAPを終了してください。そのあと,戻り値を参考にエラーの対策を行ってください。