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.
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.
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