I'm trying to figure how to implement this in TSQL
do
update stuff set col = 'blah' where that_row = 'the right one'
select trash from stuff ...
until some_condition
The only iterative control flow sentence provided by Transact-SQL is while (condition) sentences
that first evaluates the condition and if that condition is true then execute the sentence.
I'm thinking in a scenario like execute a UPDATE statement over a table until some condition triggered y the last UPDATE executed is achieved.
Most important, I'm looking for the less-dirty approach to this problem (Duplicating the UPDATE before the WHILE does not make too much sense to me as the UPDATE sentence can be arbitrarily long and complex)
EDIT: The problem I'm trying to solve involve multiple UPDATE statements under the same table, each one taking and transforming the values from the previous iterations. This is not possible to do in just one big UPDATE statement, as each row will be evaluated and updated only once, so a loop is the only way I can figure out to make this mess to work.
In SQL Server, there is no FOR LOOP. However, you simulate the FOR LOOP using the WHILE LOOP.
PL/SQL provides four kinds of loop statements: basic loop, WHILE loop, FOR loop, and cursor FOR loop.
This is effectively a Do-While loop:
WHILE (1=1)
BEGIN
-- Do stuff...
IF (some_condition is true)
BREAK;
END
But as @Joel Coehoorn noted, always try to use a set based approach first. I would only resort to a loop if I can't think of a way to solve using set operations.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With