このセクションでは、結果宛先を管理するための情報と手順を提供します。
通常は、DB2 クエリー・パトローラーは照会結果をデータベース表として保管します。 これらの表は、DQP_RES_TBLSPC プロファイル変数で定義されている表スペースに常駐します。 このプロファイル変数が表スペースを指定しない場合は、 結果表は DB2 によって決定された表スペースに入れられます。 DB2 クエリー・パトローラー・プロファイル変数の設定については、 DB2 プロファイル変数を参照してください。
DB2 クエリー・パトローラーの結果宛先表では、代替照会結果宛先の記述を指定できます。 代替宛先には、ファイルまたは名前付きパイプを使用できます。 結果がファイルまたはパイプに書き込まれる場合には、 結果はコンマで区切られた可変長形式で出力されます。
結果がファイルに書き込まれる場合、宛先記述でファイル名を指定します。 結果がパイプに書き込まれる場合、記述では、 結果のパイプ接続先の実行可能プログラムの名前をコマンド行パラメーターと共に指定します。
ファイルまたはパイプ接続された宛先については、以下の変数を記述に含めることができます。 実行時の値は、照会の実行の前にこれらの値を置換します。
結果宛先記述で 3 つすべての変数を使用する場合、宛先はたとえば次のようになります。
$(HOME)\$(USER)\job$(JOB)_results\result.txt
結果宛先変数が解決したら、結果宛先はたとえば次のようになります。
C:\qpuser\job0000002_results\result.txt
他に指定できる変数は $(PIPE) 変数であり、 これはパイプ・プログラムで命名されたパイプを表します。 DB2 クエリー・パトローラー では、コマンドの STDIN にデータが書き込まれる代わりに、 名前付きパイプにデータが書き込まれるようにすることができます。
$(PIPE) 変数を結果宛先記述で使用する場合、 DB2 クエリー・パトローラー・サーバーが使用するパイプの名前がプログラム引き数として渡されます。 たとえば、結果宛先記述が次のようであるとします。
C:\pipes\testprogram.exe $(PIPE)
$(PIPE) 変数はパイプの名前に解決され、プログラムに渡されます。 結果セットを得るためには、 プログラムはこの引き数を使用して名前付きパイプへの接続をオープンしなければなりません。 サンプルのパイプ・プログラムは、 DB2 クエリー・パトローラー CD-ROM の db2/samples/c ディレクトリーに収録されています。
パイプ・プロセスは、シェル・スクリプトまたは他の任意の実行プログラムとすることができます。 DB2 クエリー・パトローラーは、ジョブ所有者のユーザー ID の下でこのプロセスを起動しますが、 環境変数はエージェントが開始されたときに設定されたままになります。 システム管理者が結果宛先記述で $(PIPE) 変数記号を指定しないかぎり、 プロセスは STDIN から結果を読み取ることができます。 $(PIPE) 変数記号を指定した場合には、 DB2 クエリー・パトローラー SQL 実行プログラムにより作成された名前付きパイプから結果が読み取られます。 すべての結果を読み取る前にプロセスが終了すると、このジョブは打ち切られます。 UNIX では、"remote" という名前のマシンで結果ファイルを作成するには、 以下の宛先記述を使用できます。
rsh remote "cat > job$(JOB)_results"
Windows 環境では、STDIN へのパイプは他のオペレーティング・システムとは異なった仕方で扱われます。 Windows のアプリケーション間でハンドルを渡す方法のため、追加の引き数が必要となります。 追加の引き数 -9 handleNumber が、パイプ・プログラムへの呼び出しに付加されます。 たとえば、パイプ結果宛先が C:\pipes\testprogram.exe $(HOME)\ $(USER) \$(JOB) である場合、 結果宛先変数が解決された後のパイプ・プログラムへの呼び出しは、次のようになります。
C:\pipes\testprogram.exe C:\qpuser\0000001 -9 handleNumber
追加の引き数 -9 handleNumber は、
親プロセスのパイプ書き込みハンドルです。
パイプ・プログラムは、
サーバー・プロセスが書き込みを終了したらパイプを破棄することを許可するために、
この渡されたハンドルをクローズしなければなりません。
ハンドルがクローズされない場合は、パイプ・プロセスは停止してデータを待ち、
サーバー・プロセスは停止してパイプ・プロセスが終了するのを待ちます。
![]() | パイプ・プログラムの例は、
DB2 クエリー・パトローラー CD-ROM の db2/samples/c ディレクトリーに収録されています。
サンプルには次のものが含まれます。
|
次のリストでは、個々のノード・パラメーターの情報を提供します。
他に指定できる変数は $(PIPE) 変数であり、 これはパイプ・プログラム・コードで命名されたパイプを表します。 DB2 クエリー・パトローラーでは、コマンドの STDIN にデータが書き込まれる代わりに、 名前付きパイプにデータが書き込まれるようにすることができます。
$(PIPE) を結果宛先記述で使用する場合、 DB2 クエリー・パトローラー・サーバーが使用するパイプの名前がプログラム引き数として渡されます。 たとえば、結果宛先記述が次のようであるとします。
C:\pipes\testprogram.exe $(PIPE)
$(PIPE) 変数はパイプの名前に解決され、プログラムに渡されます。 結果セットを得るためには、 プログラムはこの引き数を使用して名前付きパイプへの接続をオープンしなければなりません。 サンプルのパイプ・プログラムは、 DB2 クエリー・パトローラー CD-ROM の db2/samples/c ディレクトリーに収録されています。
結果の宛先を編集するには、以下の手順に従います。
注: | 宛先の名前を変更することはできません。 変更できるのは宛先のタイプと説明だけです。 |