Cómo implementar un bucle do-while en tsql


Estoy tratando de averiguar cómo implementar esto en TSQL

do 
  update stuff set col = 'blah' where that_row = 'the right one'
  select trash from stuff ...
until some_condition

La única oración de flujo de control iterativo proporcionada por Transact-SQL es while (condition) sentences que primero evalúa la condición y si esa condición es verdadera, luego ejecuta la oración.

Estoy pensando en un escenario como ejecutar una instrucción UPDATE sobre una tabla hasta que se active alguna condición y se logre la última ACTUALIZACIÓN ejecutada.

Lo más importante, estoy buscando el enfoque menos sucio para este problema (Duplicar la ACTUALIZAR antes del TIEMPO no tiene demasiado sentido para mí, ya que la oración de ACTUALIZACIÓN puede ser arbitrariamente larga y compleja)


EDIT : El problema que estoy tratando de resolver involucra múltiples instrucciones de ACTUALIZACIÓN bajo la misma tabla, cada una tomando y transformando los valores de las iteraciones anteriores. Esto no es posible hacer en una sola declaración de ACTUALIZACIÓN grande, ya que cada fila se evaluará y actualizará solo una vez, por lo que un bucle es la única manera que puedo averiguar para hacer este lío a trabajo.

Author: abatishchev, 2009-10-03

1 answers

Esto es efectivamente un bucle Do-While:

WHILE (1=1)
  BEGIN

  -- Do stuff...

  IF (some_condition is true)
     BREAK;

  END

Pero como @Joel Coehoorn señaló, siempre intente usar un enfoque basado en conjuntos primero. Solo recurriría a un bucle si no puedo pensar en una forma de resolver usando operaciones de conjunto.

 40
Author: Mitch Wheat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-10-03 04:08:06