WebSphere Message Broker バージョン 8.0.0.5 オペレーティング・システム: AIX、HP-Itanium、Linux、Solaris、Windows、z/OS

製品の最新バージョンについては、IBM Integration Bus バージョン 9.0 をご覧ください。

DELETE FROM ステートメント

DELETE FROM ステートメントは、検索条件に基づいて、外部データベースの表から行を削除します。

構文

構文図を読む構文図をスキップする
>>-DELETE--FROM--TableReference--+---------------------+-------->
                                 '-AS--CorrelationName-'   

>--+-------------------+---------------------------------------><
   '-WHERE--Expression-'   

WHERE

|--TableReference = --Database---------------------------------->

>--+------------------------------------------+----------------->
   '-+---------------------+--.--SchemaClause-'   
     '-.--DataSourceClause-'                      

>--.--TableClause-----------------------------------------------|

|--DataSourceClause = --+-DataSourceName-------------+----------|
                        '-{--DataSourceExpression--}-'   

|--SchemaClause = --+-SchemaName-------------+------------------|
                    '-{--SchemaExpression--}-'   

|--TableClause = --+-TableName-------------+--------------------|
                   '-{--TableExpression--}-'   

WHERE 文節式が TRUE に評価されるすべての行は、TableReference によって識別される表から削除されます。

個々の行が順番に検査され、変数は現在行を指すように設定されます。 通常、WHERE 文節式はこの変数を使用して列値にアクセスするので、その内容に従って行が保存されたり削除されたりします。 変数は CorrelationName によって参照されるか、または AS 文節がない場合は TableName によって参照されます。

表参照

表参照は、メッセージ・ツリーの参照に使用される特殊なフィールド参照です。 先頭は常に『Database』という語になり、以下のエレメントのいずれかが含まれる可能性があります。
  • 表名のみ
  • スキーマ名と表名
  • データ・ソース名 (つまり、データベース・インスタンスの名前)、スキーマ名、および表名
いずれの場合も、名前は直接指定するか、または式を中括弧 ({...}) で囲んで指定できます。 直接指定したデータ・ソース、スキーマ、または表の名前は、名前置換の対象になります。 つまり、使用している名前が既知の名前になるよう宣言されている場合、名前自体ではなく宣言済みの名前の値が使用されます (DECLARE ステートメントを参照)。

スキーマ名を指定しないと、ブローカーのデータベース・ユーザーのデフォルト・スキーマが使用されます。

データ・ソース名を指定しないと、ノードの「データ・ソース」 属性によって指されているデータベースが使用されます。

WHERE 文節

WHERE 文節式はすべてのブローカーの演算子および関数をどのような組み合わせでも使用できます。 この式は、表の列、メッセージ・フィールド、および宣言済み変数や定数を参照できます。

しかし、ブローカーは式を検証し、データベースが式全体を評価可能であるかを判別して、WHERE 文節式を扱うことに注意してください。 可能である場合、式はデータベースに渡されます。 データベースによる評価が可能であるためには、データベースでサポートされる関数と演算子だけを使用しなければなりません。

しかし、WHERE 文節は、メッセージ・フィールド、包含している SELECT によって宣言された相関名、および有効範囲内にある他の宣言済み変数や定数を参照できます。

データベースが式全体を評価できない場合は、ブローカーはトップレベルの AND 演算子を検索し、副次式を別々に検証します。 それから、ブローカーに残りの副次式を評価させたまま、データベースに評価可能な副次式を渡すよう試みます。 この状態に関して以下の 2 つの理由で注意が必要です。
  1. WHERE 文節式への小さな変更であっても、パフォーマンスに大きく影響する場合があります。 ユーザー・トレースを調べることにより、データベースに対してどれほどの式が渡されているかを判別できます。
  2. データベースの関数の中には、ブローカーの関数とわずかに動作が異なるものがあります。

エラーの処理

削除操作中にエラーが起きる可能性があります。 例えば、データベースが操作可能でなくなる場合があります。 その場合 (ノードの「データベース・エラーで例外をスロー」プロパティーが FALSE に設定されているのでない限り)、例外がスローされます。 これらの例外は、該当する SQL コード、状態、ネイティブ・エラー、およびエラー・テキストの値を設定し、エラー・ハンドラーで処理できます (DECLARE HANDLER ステートメントを参照)。

データベース・エラーの処理について詳しくは、 データベース状態のキャプチャーを参照してください。

以下の例は、dataSource プロパティーが構成されていて、このプロパティーが識別するデータベースに SHAREHOLDINGS という表と ACCOUNTNO という列があることを想定しています。
DELETE FROM Database.SHAREHOLDINGS AS S
       WHERE S.ACCOUNTNO = InputBody.AccountNumber;

この例は、表 SHAREHOLDINGS の中の ACCOUNTNO 列の値が、メッセージの中の AccountNumber フィールドの値と等しい行はすべて、この表から削除されます。 この操作には、ゼロ、1 つ、または複数の行が表から削除される可能性があります。

次の例は、計算されたデータ・ソース、スキーマ、および表の名前の使用法を示します。
-- Declare variables to hold the data source, schema, and table names and
-- set their default values
DECLARE Source CHARACTER 'Production';
DECLARE Schema CHARACTER 'db2admin';
DECLARE Table  CHARACTER 'DynamicTable1';

-- Code which calculates their actual values comes here

-- Delete rows from the table
DELETE FROM Database.{Source}.{Schema}.{Table} As R WHERE R.Name = 'Joe';
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        最終更新:
        
        最終更新: 2015-02-28 17:47:21


参照トピック参照トピック | バージョン 8.0.0.5 | ak04990_