UNIX システムの dbsql の終了コード

UNIX クライアント・システムでは、dbsql コマンドの終了コードによって、SQL コマンドの実行状況に関する情報が提供されます。

dbsql プロンプトで対話式に、またはスクリプト (dbsql -f) を使用して、照会を実行すると、コマンドから以下のいずれかの終了コードが返されます。
0
すべての照会が正常に終了しました。
1
1 つ以上の照会が正常に終了しました。
2
すべての照会が失敗しました。
例えば、mytest.sql ファイルに、次のような無効な表 (T11) から選択する照会が含まれている場合などです。
$ dbsql -f mytest.sql
[IBM][CLI Driver][DB2/LINUXX8664] SQL0204N "BLUDB.T11" is an undefined 
name. SQLSTATE=42704
$ echo $?
2
dbsql -c コマンドを使用して照会を実行すると、終了コードは以下のようになります。
0
照会は成功しました
-1 または 255
SQL は失敗しました (構文の問題、認証の失敗、許可の問題)
-2 または 254
接続に失敗しました
-3 または 253
ユーザーが要求を取り消しました
-4 または 252
セッションが終了しました
多くのプラットフォームでは、0 から 255 を除く範囲の戻りコードはサポートされません。 Linux および UNIX プラットフォームでは、-1 から -4 はモジュロ 256 に変換されるため、値 -1 と 255 は同等です。
$ dbsql -c "select * from t11"
[IBM][CLI Driver][DB2/LINUXX8664] SQL0204N "BLUDB.T11" is an undefined 
name. SQLSTATE=42704
$ echo $?
255

dbsql -f コマンドは、ファイル内のすべてのステートメントを実行します。照会でエラーが検出されたときに dbsql コマンドを停止して終了するには、コマンド行に -v ON_ERROR_STOP=1 を指定します。照会が失敗する前に、正常に終了した照会があった場合は、終了コードが 1 になります。最初の照会が失敗した場合は、終了コードが 2 になります。

照会ファイル内に、次の例のような ON_ERROR_STOP ブロックを作成したとします。
<initial SQL queries>
\set ON_ERROR_STOP ON
     <queries inside block> 
\unset ON_ERROR_STOP
<trailing SQL queries>

ON_ERROR_STOP ブロックがあるときには、初期 SQL コマンド・セクションまたは末尾の SQL コマンド・セクションでの照会の正常終了または失敗は無視されます。 このブロック内のコマンドの正常終了または失敗によって、終了値が決まります。 終了コードは、0 (ブロック内のすべての照会が正常に終了した)、1 (照会の一部が正常に終了した)、または 2 (ブロック内のすべての照会が失敗した) です。 ON_ERROR_STOP ブロックを設定解除するためのコマンドを組み込まなかった場合は、ブロックがファイルの終わりで終了します。