¿Existe algún método para implementar el do whilebucle en SQL Server 2008?
sql-server
sql-server-2008
loops
while-loop
do-while
Nithesh Narayanan
fuente
fuente

Respuestas:
No estoy seguro acerca de DO-WHILE IN MS SQL Server 2008, pero puede cambiar su lógica de bucle WHILE, para usar como bucle DO-WHILE.
Los ejemplos se toman de aquí: http://blog.sqlauthority.com/2007/10/24/sql-server-simple-example-of- while - loop - with - continue - and - break - keywords/
Pero intente evitar bucles a nivel de base de datos. Referencia .
fuente
Si no se siente muy ofendido por la
GOTOpalabra clave, se puede utilizar para simular unDO/WHILEen T-SQL. Considere el siguiente ejemplo bastante absurdo escrito en pseudocódigo:Aquí está el código T-SQL equivalente usando goto:
Nótese el que uno entre la
GOTOsolución activada y el originalDO/WHILEpseudocódigo. Una implementación similar usando unWHILEbucle se vería así:Ahora, por supuesto, podría reescribir este ejemplo en particular como un
WHILEbucle simple , ya que no es un buen candidato para una construcciónDO/WHILE. Se hizo hincapié en la brevedad del ejemplo más que en la aplicabilidad, ya que los casos legítimos que requieren unaDO/WHILEson raros.REPETIR / HASTA, alguien (NO funciona en T-SQL)?
... y la
GOTOsolución basada en T-SQL:Mediante el uso creativo
GOTOy la inversión lógica a través de laNOTpalabra clave, existe una relación muy estrecha entre el pseudocódigo original y laGOTOsolución basada. Una solución similar que usa unWHILEbucle se ve así:Se puede argumentar que para el caso de
REPEAT/UNTIL, laWHILEsolución basada es más simple, porque la condición if no está invertida. Por otro lado, también es más detallado.Si no fuera por todo el desdén en torno al uso de
GOTO, estas incluso podrían ser soluciones idiomáticas para esas pocas ocasiones en las que estas construcciones de bucle (malvadas) en particular son necesarias en el código T-SQL en aras de la claridad.Úselos a su propia discreción, tratando de no sufrir la ira de sus compañeros desarrolladores cuando lo atrapen usando el tan difamado
GOTO.fuente
Me parece recordar haber leído este artículo más de una vez, y la respuesta solo se acerca a lo que necesito.
Por lo general, cuando creo que voy a necesitar un
DO WHILET-SQL es porque estoy iterando un cursor y estoy buscando en gran medida una claridad óptima (frente a la velocidad óptima). En T-SQL, eso parece ajustarse aWHILE TRUE/IF BREAK.Si ese es el escenario que lo trajo aquí, este fragmento puede ahorrarle un momento. De lo contrario, bienvenido de nuevo, yo. Ahora puedo estar seguro de que he estado aquí más de una vez. :)
Desafortunadamente, T-SQL no parece ofrecer una forma más limpia de definir individualmente la operación de bucle, que este bucle infinito.
fuente
También puede usar una variable de salida si desea que su código sea un poco más legible:
Esto probablemente sería más relevante cuando tiene un ciclo más complicado y está tratando de realizar un seguimiento de la lógica. Como se indicó, los bucles son caros, así que intente utilizar otros métodos si puede.
fuente
Only While Loop es oficialmente compatible con SQL Server. Ya hay una respuesta para DO while loop. Estoy detallando la respuesta sobre las formas de lograr diferentes tipos de bucles en el servidor SQL.
Si lo sabe, debe completar la primera iteración del ciclo de todos modos, entonces puede probar DO..WHILE o REPEAT..UNTIL versión del servidor SQL.
DO..WHILE Loop
REPETIR ... HASTA bucle
En bucle
Referencia
fuente