ESQL には、データベースにアクセスするためのステートメントと関数が多数あります。
Compute、Database、および Filter ノードからユーザー・データベースにアクセスできます。
注: これらのノードのデータベース・アクセス機能の間に違いはありません。これまでの経緯に基づく名前もあれば、標準的な使用法に基づく名前もあります。
データベース内のデータを使用してメッセージを更新または作成したり、メッセージ内のデータを使用してデータベース内のデータを更新または作成することができます。
以下の点に注意してください。
- ESQL データベース・ステートメントまたは関数を使用するノードの Data Source プロパティーは、データベースの名前 (つまり ODBC DSN) を使用して設定されていなければなりません。このデータベースはアクセス可能かつ操作可能でなければならず、ブローカーから接続できなければなりません。
- 同じノードからアクセスされるすべてのデータベースは、ノードの Data Source プロパティーで指定されたデータベースと同じ OBDC 機能を持っている必要があります。これらのデータベースのタイプ (例えば DB2 または Oracle)、レベル (例えばリリース 8.1 CSD3)、およびプラットフォームが同じ場合には、この要件は常に満たされます。それ以外のデータベースを組み合わせた場合、同じ OBDC 機能を持つかどうか保証されません。ノードの Data Source プロパティーで指定されたデータベースと同じ OBDC 機能を持たないデータベースに対してノードがアクセスを試行すると、ブローカーはエラー・メッセージを出します。
- 1 つの SELECT FROM 文節で参照されているすべての表は、同じデータベース中になければなりません。
ブローカーが稼働しているシステムに適切な ODBC データ・ソースが作成されていることを確認しなければなりません。mqsisetdbparms コマンドを使用して特定のデータベースのユーザー ID とパスワードを設定した場合、ブローカーはこれらの値を使用してデータベースに接続します。ユーザー ID とパスワードを設定していない場合、mqsicreatebroker コマンドで指定した (しかも後続の mqsichangebroker コマンドで変更した) デフォルトのデータベース・ユーザー ID とパスワードをブローカーは使用します。
z/OS システムでは、カスタマイズ・データ・セット <hlq>.SBIPPROC 中の JCL メンバー BIPSDBP を使用して、mqsisetdbparms コマンドを実行します。
データベース・ユーザー ID に、フローで必要な操作を実行できるだけの特権があることも確認しなければなりません。特権がない場合、実行時にエラーが起きます。
Throw exception on database error プロパティーと Treat warnings as errors プロパティーのチェック・ボックスを選択し、Transaction プロパティーを「自動」に設定すると、最大限の柔軟性が提供されます。設定後、トランザクション制御のために COMMIT ステートメントと ROLLBACK ステートメントを使用して、ハンドラーを作成してエラーを処理できます。