PATH 文節

PATH 機能はオプションであり、検索する外部スキーマのリストをコンマで区切って指定します。

リストにはさまざまな機能、たとえば、再使用可能関数やプロシージャーが入ります。
注: <ノード・スキーマ> は、それがあってもなくても、 最初の PATH エレメントとして暗黙的に組み込まれます。

構文

この定義は以前の WebSphere Business Integration Message Broker バージョンとの互換性を提供します。 名前なしスキーマ以外に参照されるスキーマがない場合、 Eclipse ツール・セットによって生成されたブローカー ESQL には、この新しい構文は適用されません。

PATH 機能は、次のアルゴリズムに従って、 ツール内の非修飾の関数とプロシージャー名の名前を解決するために使用されます。

非修飾名に一致する関数またはプロシージャーが 1 つなければならず、さもないとツールはエラーを報告します。 関数またはプロシージャーの名前を schemaId で修飾することによって、 エラーを訂正できます。
  1. 現行の MODULE (もしあれば) から、一致する関数またはプロシージャーが検索されます。 MODULE 内では、そこに含まれる MODULE 有効範囲関数およびプロシージャーだけが可視です。 MODULE 有効範囲の関数およびプロシージャーが スキーマ有効範囲の関数およびプロシージャーを隠します。
  2. <ノード・スキーマ> (それに含まれる MODULE を除く) および <SQL ブローカー・スキーマ> または PATH ステートメントによって識別されるスキーマから、 一致する関数プロシージャーが検索されます。
注: schemaId は完全修飾スキーマ名でなければなりません。

<ノード・スキーマ> は、ノードのメッセージ・フローを含むスキーマです。 このスキーマの名前は、ブローカー XML メッセージの メッセージ処理ノード uuid の最後のセグメントによって与えられます。

ルーチンを呼び出すとき、 使用する名前をスキーマ名によって修飾できます。 動作は、以下のように状況によって異なります。
  • スキーマが指定された場合、指定されたスキーマ・ルーチンが呼び出されます。 スカラー組み込み関数 (CAST、EXTRACT、および特殊レジスターを除く) は、 SQL と呼ばれる暗黙的に宣言されたスキーマ内で定義されていると見なされます。 スカラー組み込み関数は、この方法 (たとえば SQL.SUBSTRING(...)) で呼び出すことができます。

    次に生じる事柄は、呼び出し元がモジュール・ルーチンにあるのか、 スキーマ・ルーチンにあるのかに依存します。

    モジュール・ルーチンの場合
    • スキーマが指定されず、 呼び出しステートメントがモジュール・ルーチン内にあり、 指定された名前のルーチンがローカル・モジュール内に存在する場合、 そのローカル・ルーチンが呼び出されます。
    • スキーマが指定されず、 呼び出しステートメントがモジュール・ルーチン内にあり、 指定された名前のルーチンがローカル・モジュール内に存在しない場合、 スキーマ・パス内のすべてのスキーマで、同じ名前のルーチンが検索されます。
      一致する関数が 1 つのスキーマ内に存在する場合、その関数が使用されます。 一致する関数が複数のスキーマ内に存在する場合、 コンパイル時エラーが発生します。 一致する関数がない場合には、スキーマ SQL が検索されます。
      注: この規則とその前の規則は、 ローカル・モジュール・ルーチンが同じ名前の組み込みルーチンよりも優先されることを暗示しています。
    スキーマ・ルーチンの場合
    • スキーマが指定されず、 呼び出し側がスキーマ・ルーチンであり、 指定された名前のルーチンがローカル・スキーマ内に存在する場合、 そのローカル・ルーチンが呼び出されます。
    • スキーマが指定されず、呼び出しステートメントがスキーマ・ルーチン内にあり、 指定された名前のルーチンがローカル・スキーマ内に存在しない場合、 スキーマ・パス内のすべてのスキーマで、同じ名前のルーチンが検索されます。
      一致する関数が 1 つのスキーマ内に存在する場合、その関数が使用されます。 一致する関数が複数のスキーマ内に存在する場合、 コンパイル時エラーが発生します。 一致する関数がない場合には、スキーマ SQL が検索されます。
      注: この規則とその前の規則は、 ローカル・スキーマ・ルーチンが同じ名前の組み込みルーチンよりも優先されることを暗示しています。

<ノード・スキーマ> は、ノードのメッセージ・フローを含むスキーマとして定義されます。 このスキーマの名前は、ブローカー XML メッセージの メッセージ処理ノード uuid の最後のセグメントによって与えられます。

<ノード・スキーマ> はこのようにして、 以前の WebSphere Business Integration Message Broker バージョンとの後方互換性を提供します。

参照されるスキーマが <ノード・スキーマ> だけである場合、 ブローカー XML メッセージは WebSphere Business Integration Message Broker V5.0 に含まれている追加の機能を組み込みません。

WebSphere Business Integration Message Broker の以前のバージョンのブローカーでは、 複数のスキーマ (たとえば、再利用のためのサブルーチン・ライブラリー) がサポートされていません。 製品の旧バージョンのブローカーにデプロイするには、 すべての ESQL サブルーチンを、それらを呼び出しているメッセージ・フローおよびノードと同じスキーマ内に配置します。

Eclipse ツールは、 内容支援およびソース・コード妥当性検査で WebSphere Business Integration Message Broker V5.0 ESQL 構文を使用します。 ブローカー ESQL コードを生成するとき、 Eclipse ツールは、後方互換性のために V2.1 スタイル・コードを生成することができます。

メッセージ・フローのブローカー・スキーマは、スキーマ・レベルで、 ESQL ファイルに以下のいずれかを含んでいる必要があります。
  • スキーマ・レベル関数
  • スキーマ・レベル・プロシージャー
  • スキーマ・レベル定数
  • モジュール・レベル定数
  • モジュール・レベル変数

上記の項目がなくても、Eclipse ツールは、 MODULE および FUNCTION Main ラッパーを持たないブローカー ESQL を生成します。 このスタイルは、V2.1 および V5.0 の両方のブローカーで受け入れられます。 ただし、V2.1 ブローカーを使用する場合、 コード内で V5.0 構文 (たとえば、ネーム・スペース) を使用することはできません。

関数およびプロシージャー名は、 SCHEMA または MODULE 内で固有でなければなりません。

関連概念
ESQL

関連タスク
ESQL の開発

関連資料
構文の設定
ESQL のステートメント
BROKER SCHEMA ステートメント
CREATE MODULE ステートメント