Symfoware Server アプリケーション開発ガイド(埋込みSQL編) - FUJITSU - |
目次 索引 |
第3章 アプリケーションの作成 | > 3.2 SQL埋込みCOBOLプログラムの作成方法 |
アプリケーションはSQL文を実行したあと、実行結果を確認して処理を進めて行くことが必要です。このSQL文の実行結果を確認する方法には、以下の2通りがあります。
状態変数およびメッセージ変数を使用する場合
埋込み例外宣言(WHENEVER文)を使用する場合
SQL文の実行結果は、各SQL文の実行ごとに、状態変数SQLSTATEおよびメッセージ変数SQLMSGに通知されます。アプリケーションでは、その値を判定しながら処理を進めます。
SQLSTATEおよびSQLMSGは、あらかじめ埋込みSQL宣言節で宣言しておく必要があります。宣言の詳細は、“状態変数の宣言”および“メッセージ変数の宣言”を参照してください。
SQLSTATEに通知される値とその意味は、“SQLSTATE値”を参照してください。また、SQLMSGに通知される内容は、“メッセージ集”を参照してください。
SQLSTATEおよびSQLMSGを使用したSQL文の実行結果の確認方法は、“状態変数およびメッセージ変数の使用例”を参照してください。
埋込み例外宣言は、SQL文が例外条件を生じた場合に実行する処理を指定するSQL文です。これにより、SQL文の実行ごとに、実行結果をチェックする必要がなくなります。埋込み例外宣言の指定例を以下に示します。
例1
データなし以外のエラーが発生した場合には、ERR001へ進むことを指定します。
EXEC SQL WHENEVER SQLERROR GOTO :ERR001 END-EXEC. (1) (2)(1) 条件
(2) 例外動作
例2
検索の結果データが見つからない場合に、処理をそのまま続行することを指定します。
EXEC SQL WHENEVER NOT FOUND CONTINUE END-EXEC. (1) (2)(1) 条件
(2) 例外動作
条件は、以下の2通りの指定ができます。
- NOT FOUND:
- 検索データが見つからない場合に指定の例外動作を行います。
- SQLERROR:
- “検索データが見つからない”以外のエラーが発生した場合に指定の例外動作を行います。
例外動作は、以下の2通りの指定ができます。
- CONTINUE:
- 次のステートメントに進みます。
- GOTO <行き先>:
- 行き先で指定のステートメントに進みます。ここで、<行き先>は、制御を移す先の節名(セクション名)または段落名(パラグラフ名)の前にコロン“:”を付けて指定します。
例3
SQL埋込みCOBOLプログラムで、SQL文にエラーが発生した場合には、P-ERRORへ進み、変数RCODEに8を設定することを指定します。
EXEC SQL WHENEVER SQLERROR GOTO :P-ERROR END-EXEC. : P-ERROR. MOVE 8 TO RCODE.WHENEVER文は複数個宣言することができます。条件の同じWHENEVER文を指定した場合、アプリケーション中での記述順序であとの宣言が有効になります。実行の順序とは関係ありません。
WHENEVER文の有効範囲の例を以下に示します。
(1) 状態変数“SQLSTATE”およびメッセージ変数“SQLMSG”を宣言します。
(2) SQL文の実行でNOT FOUND以外のエラーが生じた場合にP-ERRORへ進み、エラー情報を出力し、プログラムは終了します。
(3) カーソル“CU1”の操作でNOT FOUND(検索データが見つからない)が生じた場合にP-NEXTへ進み、カーソル“CU1”のクローズと在庫数量の出力を行います。
(4) カーソル“CU2”の操作でNOT FOUND(検索データが見つからない)が生じた場合にP-ENDへ進み、カーソル“CU2”のクローズと発注数量の出力を行い、プログラムは終了します。
目次 索引 |