データベース内の列の参照

外部データベースへの照会のために標準的な SQL SELECT 構文がサポートされていますが、 留意すべきいくつかの点があります。 メッセージの中で構造を繰り返すのではなく、 キーワード Database を使用して表の名前を事前に指定する必要があります。 それは、SELECT が外部データベースをターゲットにしていることを示すためです。

データベースの SELECT の基本的な書式は次のようになります。

SELECT ...
  FROM Database.TABLE1
  WHERE ...

必要であれば、次のようにしてスキーマ名を指定できます。

SELECT ...
  FROM Database.SCHEMA.TABLE1
  WHERE ...

ここで、SCHEMA は、表 TABLE1 が定義されるスキーマの名前です。 使用しているユーザー ID がスキーマと対応しない場合は、 スキーマを組み込みます。たとえば、ユーザー ID が USER1 の場合、式 Database.TABLE1 は Database.USER1.TABLE1 と同等です。しかし、 データベース内のテーブルと関連付けられているスキーマが db2admin である場合は、 Database.db2admin.TABLE1 と指定しなければなりません。 スキーマを組み込んでおらず、スキーマが現在のユーザー ID と対応しない場合、 メッセージがメッセージ・フローに処理される際に、ブローカーは実行時エラーを生成します。

列名への参照は、表名によって修飾するか、 または、FROM 文節により表に定義されている相関名によって修飾します。 次のような照会を正常に実行するには、

SELECT column1, column2 FROM table1

次の 2 つの書式のいずれかを書く必要があります。

SELECT T.column1, T.column2 FROM Database.table1 AS T
 
SELECT table1.column1, table1.column2 FROM Database.table1

SELECT 内に現れる可能性のあるメッセージ内のフィールドへのあらゆる参照から、 データベース列への参照を区別するために、次のようにする必要があります。

SELECT T.column1, T.column2 FROM Database.table1
  AS T WHERE T.column3 = Body.Field2

標準的な select all SQL オプションが、SELECT 文節でサポートされています。 このオプションを使用する場合、列名を表名によって修飾するか、 または、表に定義されている相関名によって修飾する必要があります。 以下に例を示します。

SELECT T.* FROM Database.Table1 AS T

データベース照会で ESQL のプロシージャーおよび関数の名前が使用される場合は、 これらを呼び出しの中のどの部分に置くかが、これらの名前の処理方法に影響します。 プロシージャーや関数が、照会によって戻される結果に影響を与えると判断される場合、 これは ESQL としては処理されず、データベース呼び出しの一部として渡されます。

これが適用されるのは、SELECT ステートメントで、 関数名やプロシージャー名を列の ID に使おうとする場合です。

たとえば、Select 文節で指定された列の ID に CAST ステートメントが使用されている場合は、 その列に戻されるデータのデータ・タイプを決定するデータベース照会で、この CAST ステートメントが使用されます。 ESQL CAST はその ESQL データ・タイプに対しては実行されず、 戻されるデータは、そのデータ・タイプのデータベース対話の変換処理によって変わってきます。

関数やプロシージャーが WHERE 文節で指定された列 ID で使用される場合、 これは直接データベース・マネージャーに渡されて、処理されます。

以下のトピックの例では、 外部データベース照会の結果セットが WebSphere Business Integration Message Broker 内でどのように示されるかを考慮します。 データベース照会の結果は、Compute ノードを使用して、 メッセージ内のフィールドに代入されます。

列関数は、表またはメッセージの選択されたすべての行の単一列の値をとって、 単一のスカラー結果を戻す関数です。

関連概念
メッセージ・フロー
ESQL
メッセージのモデル化

関連タスク
メッセージ・フローの設計
メッセージ・フローの内容の定義
ESQL ファイルの管理

関連資料
Compute ノード
Database ノード
Filter ノード
ESQL
CARDINALITY 関数
SELECT 関数
サンプル・メッセージ