Hitachi

Hitachi Advanced Data Binder AP開発ガイド


18.1.5 SQL文のエラー判定と対処方法

APで実行したSQL文が正常に実行されたかどうかを判定する必要があります。ここでは,SQL文が正常に実行されたかどうかを判定する方法と,エラーを検出した場合の対処方法について説明します。

〈この項の構成〉

(1) SQL文のエラー判定方法

SQL文が実行されると,CLI関数の戻り値としてSQLCODEが返却されます。返却されたSQLCODEの値によってSQL文が正常に実行されたかどうかを判定します。SQLCODEの値とその意味を次の表に示します。

表18‒1 SQLCODEの値とその意味

項番

SQLCODEの値

意味

1

100

検索する行がなくなったことを意味しています。特に,次に示すことを判定するときに有効です。

  • FETCHで取り出す行がなくなったかどうか

  • INSERTDELETE,またはUPDATEで更新対象の行があるかどうか

2

1

SQL文の処理は終了しましたが,処理の延長で警告が発生したことを意味しています。発生する警告を次に示します。

  • HADBサーバでサーバメッセージログファイルを格納しているディスクが満杯になった

  • クライアントメッセージログファイルを格納しているディスクが満杯になった

  • HADBサーバでSQLトレース情報を出力する際にメモリ不足を検知した

  • コネクション終了の延長でコミット処理に失敗し,ロールバック処理を行ってからコネクションを終了した

3

負の値

SQLエラーが発生したことを意味しています。

4

上記以外

SQL文が正常に実行されたことを意味しています。

CLI関数の戻り値については,「19.8 CLI関数の戻り値」を参照してください。

(2) エラー検出時の対処方法

SQL文のエラーを検出した場合,次に示す順序で対処します。なお,ここではCLI関数を使用した場合の例について説明します。

(a) 戻り値の出力

CLI関数の戻り値を出力,または表示します。

(b) エラーへの対処

SQL文を使用したデータ操作でエラーが発生した場合,次に示す手順で対処してください。

手順

  1. SQL結果情報のメンバisInConnectの値を判定します。isInConnectの値によって対処方法が次のように異なります。

    • isInConnectの値がa_rdb_SQL_IS_IN_CONNECTの場合

      手順の2に進んでください。

    • isInConnectの値がa_rdb_SQL_IS_NOT_IN_CONNECTの場合

      致命的なエラーが発生したため,APがHADBサーバから切り離されました。クライアントメッセージログファイルに出力されたメッセージを確認し,HADBサーバが異常終了している場合は,HADB管理者に連絡してください。

  2. SQL結果情報のメンバEndTranの値を判定します。EndTranの値によって対処方法が次の表に示すように異なります。

    項番

    EndTranの値

    対処方法

    1

    a_rdb_SQL_ROLLBACKED

    内部的にロールバックが発生したため,HADBサーバからの切り離しを行ってAPを終了してください。そのあと,戻り値を参考にエラーの対策を行ってください。

    2

    a_rdb_SQL_TRAN_NOT_ENDED

    ROLLBACKを実行してトランザクションを取り消してから,HADBサーバからの切り離しを行いAPを終了してください。そのあと,戻り値を参考にエラーの対策を行ってください。

    3

    上記以外の場合

    HADBサーバからの切り離しを行ってAPを終了してください。そのあと,戻り値を参考にエラーの対策を行ってください。