0

このコマンドでは、次のようなものを指定できます。

WHEN MATCHED AND stm.StudentMarks > 250 THEN DELETE

しかし、レコードが適格でなかった場合、どのようにトラップするのでしょうか? たとえば、stm.StudentMarks = 100? 「ELSE」を実行すると、構文エラーが発生します。

このコマンドは通常、このように使用されないことを知っています。しかし、これができれば、トランザクション、ロック、および複数の SQL ステートメントを使用する必要がなくなります。

4

3 に答える 3

1

試す:

WHEN NOT MATCHED ....... THEN ......

(指定した条件に基づいて)ターゲットに同等の行がないソース内の行を見つけるON ....か、そうでない場合は、より多くの/他の式を指定する必要があります。

WHEN MATCHED AND stm.StudentMarks <= 250 THEN .....
于 2010-12-13T06:08:22.583 に答える
0

2番目を使用します

WHEN MATCHED THEN 

追加の条件がない場合、when句は1つだけトリガーされ、最初の句は条件に一致するものをすべて取得するため、2番目の句は条件以外のすべてに一致するもののみを取得します。

于 2011-05-05T11:54:59.710 に答える
0

さらなる学習に基づいて、これを行う方法は、ビュー/TVF を使用して正しいデータ セットを取得することであると結論付けました。1 つは "IF ... THEN ..." に準拠するレコードを取得することができ、もう 1 つは ELSE に準拠するレコードを取得することができます。2 つの MERGE ステートメントを実行しているだけで、大したことではありません。

于 2010-12-22T21:35:12.957 に答える