ESQL 変数は、メッセージの処理を支援するために使用されるデータ・フィールドです。
変数は、宣言してタイプを明らかにしてからでなければ使用できません。変数のデータ・タイプは固定されます。ですから、別のタイプの値を割り当てる ESQL をコード化すると、ターゲットのデータ・タイプへの暗黙的キャストがインプリメントされるか、または例外が生じます (暗黙的キャストがサポートされていない場合)。
変数を定義してそれに名前を付けるには、DECLARE ステートメントを使用します。
ESQL 変数の名前は大/小文字を区別するため、すべての位置で適切な大/小文字を使用してください。大/小文字が確実に正しく使用されるようにするための最も簡単な方法は、常に大文字の名前を使って変数を定義することです。
ワークベンチは、未定義の変数にマークを付けます。
メッセージ・フローをデプロイする前にこれらの警告をすべて除去してください。
DECLARE ステートメントでは、変数に初期値を割り当てることができます。初期値を指定しないと、
スカラー変数は特殊値 NULL で初期化され、そして ROW 変数は空の状態に初期化されます。
その後、SET ステートメントを使用して変数の値を変更できます。
以下の 3 種類の組み込みノードは、ESQL コードを含めることができるので、ESQL 変数の使用がサポートされます。
変数のスコープ、存続時間、および共用
特定の ESQL 変数を使用できる範囲と使用可能な期間は、次のように、スコープ、存続時間、および共用として表されます。
- 変数のスコープ
- 変数が可視となる範囲を表す指標です。
ブローカー環境では、通常、変数のスコープは個々のノードに限られます。
- 変数の存続時間
- 変数が値を保持する期間を表す指標です。
ブローカー環境では、変数の存続時間はさまざまに異なりますが、通常はノード内のスレッドの存続時間に限定されます。
- 変数の共用特性
- 各スレッドが変数の独自のコピーを所有するか、それとも 1 つの変数が多数のスレッドの間で共用されるかを示します。ブローカー環境では、通常、変数は共用されません。
変数のタイプ
- 外部
- 外部変数 (EXTERNAL キーワードで定義される) は、ユーザー定義プロパティー とも呼ばれます。ESQL でのユーザー定義プロパティーを参照してください。これらはメッセージ・フローの存続期間にわたって存在し、フローを通過するすべてのメッセージにとって可視です。外部変数は、モジュール・レベルとスキーマ・レベルでのみ定義可能です。初期値 (オプションで、DECLARE ステートメントによって設定される) は、メッセージ・フロー・エディターを使用して設計時に、またはブローカー・アーカイブ・エディターを使用してデプロイメント時に変更できます。ESQL を使用して後から値を変更することはできません。
- 通常
- 通常変数 の存続時間は、1 つのメッセージがノードを通過するまでになります。この種の変数は、このメッセージのみに可視です。通常変数 を定義する場合は、キーワード EXTERNAL と SHARED の両方を省略します。
- 共用
- 共用変数は、メッセージ・フローでメモリー内のキャッシュをインプリメントするために使用できます。メッセージ・フロー応答時間の最適化を参照してください。共用変数の存続時間は長く、フローを通過する複数のメッセージに可視になります。存続期間の長い変数を参照してください。共用変数は、実行グループのプロセスの存続時間、フローまたはノードの存続時間、または変数を宣言するノードの SQL の存続時間 (のうち最も短い時間) の間存在します。共用変数は、個々のブローカーの始動後に最初のメッセージがフローまたはノードを移動する際に初期化されます。
BEGIN ... END ステートメントの ATOMIC オプションも参照してください。BEGIN ATOMIC の構成は、共用変数に多数の変更を加える必要がある場合や、他のインスタンスがデータの中間状態を参照しないようにすることが重要な場合に便利です。
特定の種類の変数については、以下を参照してください。