ALLOCATE DESCRIPTOR
ALLOCATE DESCRIPTOR ステートメントは、SQL 記述子を割り振ります。
呼び出し
このステートメントは、アプリケーション・プログラム、SQL 関数、 SQL プロシージャー、またはトリガー内にのみ組み込むことができます。 これを対話式に発行することはできません。これは実行可能ステートメントですが、動的に準備することはできません。REXX で指定してはなりません。
権限
権限は不要です。
構文
.-SQL-. .-LOCAL--. >>-ALLOCATE--+-----+--DESCRIPTOR--+--------+--SQL-descriptor-name--> '-GLOBAL-' .-WITH MAX--20-------------------. >--+--------------------------------+-------------------------->< '-WITH MAX--+-integer----------+-' '-integer-variable-'
説明
- LOCAL
- 記述子の名前の有効範囲はプログラム呼び出しのローカルであることを定義します。 記述子がこの有効範囲外に知られることがなくなります。例えば、別個にコンパイルされた他のプログラムから呼び出されるプログラムでは、その呼び出し側プログラムによって割り振られた記述子を使用することはできません。また、記述子の有効範囲は、その記述子を含むプログラムが実行しているスレッドに限定されます。 例えば、同じジョブの中にある別々の 2 つのスレッドで同じプログラムが実行している場合、2 番目のスレッドは、 最初のスレッドによって割り振られた記述子を使用することができません。
- GLOBAL
- 記述子の名前の有効範囲は SQL セッション全体であることを定義します。 記述子は、同じデータベース接続を使用して実行するどのプログラムにも知られることになります。
- SQL-descriptor-name
- 割り振る記述子の名前を指定します。名前は、指定した有効範囲を持つ既に存在する記述子と同一であってはなりません。
- WITH MAX
- 記述子は指定された項目最大数をサポートするように割り振られます。
この文節が指定されない場合、記述子は最大 20 項目を持つものとして割り振られます。
- integer
- 割り振る項目の数を指定します。integer の値は、ゼロより大きく 8000 以下でなければなりません。
- integer-variable
- 割り振る項目の数を含む整変数 (位取りがゼロの 10 進または数値変数) を指定します。 この変数は、グローバル変数にすることはできません。integer-variable の値は、ゼロより大きく 8000 以下でなければなりません。
注
記述子持続性: ローカル記述子は、以下の CLOSQLCSR オプションに基づいて暗黙的に割り振り解除されます。
- ILE プログラムでは、CLOSQLCSR(*ENDACTGRP) が指定された場合 (デフォルト)、ローカル記述子は活動化グループが終了すると暗黙的に割り振り解除されます。 CLOSQLCSR(*ENDMOD) が指定された場合、ローカル記述子はモジュールの終了時に暗黙的に割り振り解除されます。
- OPM プログラムでは、CLOSQLCSR(*ENDPGM) が指定された場合 (デフォルト)、ローカル記述子はプログラムが終了すると暗黙的に割り振り解除されます。 CLOSQLCSR(*ENDSQL) が指定された場合、ローカル記述子は呼び出しスタックの最初の SQL プログラムが終了すると暗黙的に割り振り解除されます。 CLOSQLCSR(*ENDJOB) が指定された場合、ローカル記述子はジョブが終了すると暗黙的に割り振り解除されます。
グローバル記述子は、活動化グループが終了すると暗黙的に割り振り解除されます。
ローカル記述子とグローバル記述子の両方とも、DEALLOCATE DESCRIPTOR ステートメントを使用して明示的に割り振り解除できます。
例
20 項目を保持できる大きさの 'NEWDA' という記述子を割り振ります。
EXEC SQL ALLOCATE DESCRIPTOR 'NEWDA'
WITH MAX 20