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 によって参照されます。
スキーマ名を指定しないと、ブローカーのデータベース・ユーザーのデフォルト・スキーマが使用されます。
データ・ソース名を指定しないと、ノードの「データ・ソース」 属性によって指されているデータベースが使用されます。
WHERE 文節式はすべてのブローカーの演算子および関数をどのような組み合わせでも使用できます。 この式は、表の列、メッセージ・フィールド、および宣言済み変数や定数を参照できます。
しかし、ブローカーは式を検証し、データベースが式全体を評価可能であるかを判別して、WHERE 文節式を扱うことに注意してください。 可能である場合、式はデータベースに渡されます。 データベースによる評価が可能であるためには、データベースでサポートされる関数と演算子だけを使用しなければなりません。
しかし、WHERE 文節は、メッセージ・フィールド、包含している SELECT によって宣言された相関名、および有効範囲内にある他の宣言済み変数や定数を参照できます。
削除操作中にエラーが起きる可能性があります。 例えば、データベースが操作可能でなくなる場合があります。 その場合 (ノードの「データベース・エラーで例外をスロー」プロパティーが FALSE に設定されているのでない限り)、例外がスローされます。 これらの例外は、該当する SQL コード、状態、ネイティブ・エラー、およびエラー・テキストの値を設定し、エラー・ハンドラーで処理できます (DECLARE HANDLER ステートメントを参照)。
データベース・エラーの処理について詳しくは、 データベース状態のキャプチャーを参照してください。
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';