29


2

TSQLでこれを実装する方法を理解しようとしています

更新されたものを設定するcol = 'blah' that_row = '正しいもの'ものからゴミを選択... some_conditionまで

Transact-SQLが提供する唯一の反復制御フローセンテンスは、最初に条件を評価し、その条件が真であればセンテンスを実行する `while(condition)センテンス 'です。

私は、最後に実行されたUPDATEがトリガされて何らかの条件が成立するまで、テーブルに対してUPDATE文を実行するようなシナリオを考えています。

最も重要なことは、私はこの問題に対するもっと汚くないアプローチを探しています(UPDATE文は任意に長く複雑になることがあるので、WHILEの前にUPDATEを複製してもあまり意味がありません)。

'' '' '

編集:私が解決しようとしている問題は、同じテーブルの下に複数のUPDATEステートメントを含み、それぞれが前の繰り返しからの値を取得して変換することです。 各行は一度だけ評価され、更新されるので、これは1つの大きなUPDATEステートメントでは実行できません。したがって、ループを使用することでこの問題を解決することができます。

1 回答


41


これは実質的にDo-Whileループです。

WHILE(1 = 1)

 - やりなさい...

IF(some_conditionがtrue)BREAK;

終わり

しかし@Joel Coehoornが指摘したように、常に最初にセットベースのアプローチを使用するようにしてください。 集合演算を使用して解決する方法が考えられない場合は、ループに頼るだけです。