¿Existe algún método para implementar el do while
bucle 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
GOTO
palabra clave, se puede utilizar para simular unDO
/WHILE
en 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
GOTO
solución activada y el originalDO
/WHILE
pseudocódigo. Una implementación similar usando unWHILE
bucle se vería así:Ahora, por supuesto, podría reescribir este ejemplo en particular como un
WHILE
bucle 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
/WHILE
son raros.REPETIR / HASTA, alguien (NO funciona en T-SQL)?
... y la
GOTO
solución basada en T-SQL:Mediante el uso creativo
GOTO
y la inversión lógica a través de laNOT
palabra clave, existe una relación muy estrecha entre el pseudocódigo original y laGOTO
solución basada. Una solución similar que usa unWHILE
bucle se ve así:Se puede argumentar que para el caso de
REPEAT
/UNTIL
, laWHILE
solució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 WHILE
T-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