Existe algum método para implementar do while
loop no SQL server 2008?
sql-server
sql-server-2008
loops
while-loop
do-while
Nithesh Narayanan
fonte
fonte
Respostas:
Não tenho certeza sobre o DO-WHILE NO MS SQL Server 2008, mas você pode alterar a lógica do loop WHILE, para usar como o loop DO-WHILE.
Exemplos são obtidos aqui: http://blog.sqlauthority.com/2007/10/24/sql-server-simple-example-of- while - loop - with - continue - and - break - keywords/
Mas tente evitar loops no nível do banco de dados. Referência .
fonte
Se você não se ofender com a
GOTO
palavra-chave, ela poderá ser usada para simular umDO
/WHILE
no T-SQL. Considere o seguinte exemplo sem sentido escrito em pseudocódigo:Aqui está o código T-SQL equivalente usando goto:
Observe a 1-1 mapeamento entre a
GOTO
solução activada e o originalDO
/WHILE
pseudocódigo. Uma implementação semelhante usando umWHILE
loop seria semelhante a:Agora, é claro que você pode reescrever esse exemplo em particular como um
WHILE
loop simples , pois esse não é um candidato tão bom para umaDO
/WHILE
construção. A ênfase foi dada ao exemplo de concisão e não de aplicabilidade, uma vez que casos legítimos que requeremDO
/WHILE
são raros.REPEAT / ATÉ, alguém (NÃO funciona em T-SQL)?
... e a
GOTO
solução baseada em T-SQL:Através do uso criativo
GOTO
e da inversão lógica viaNOT
palavra - chave, existe uma relação muito próxima entre o pseudocódigo original e aGOTO
solução baseada. Uma solução semelhante usando umWHILE
loop se parece com:Pode-se argumentar que, para o caso de
REPEAT
/UNTIL
, oWHILE
solução baseada é mais simples, porque a condição if não é invertida. Por outro lado, também é mais detalhado.Se não fosse por todo o desdém pelo uso de
GOTO
, essas podem até ser soluções idiomáticas para aquelas poucas vezes em que essas construções de loop particulares (más) são necessárias no código T-SQL por uma questão de clareza.Use-os a seu próprio critério, tentando não sofrer a ira de seus colegas desenvolvedores quando eles pegarem você usando os muito difamados
GOTO
.fonte
Lembro-me de ler este artigo mais de uma vez, e a resposta está próxima do que eu preciso.
Normalmente, quando penso que vou precisar de um
DO WHILE
T-SQL, é porque estou repetindo um cursor e procurando em grande parte uma clareza ideal (vs. velocidade ideal). No T-SQL, isso parece se encaixar em umWHILE TRUE
/IF BREAK
.Se esse foi o cenário que trouxe você aqui, esse trecho pode economizar um momento. Caso contrário, bem vindo de volta, eu. Agora posso ter certeza de que estive aqui mais de uma vez. :)
Infelizmente, o T-SQL não parece oferecer uma maneira mais limpa de definir a operação de loop individualmente do que esse loop infinito.
fonte
Você também pode usar uma variável de saída se quiser que seu código seja um pouco mais legível:
Isso provavelmente seria mais relevante quando você tiver um loop mais complicado e estiver tentando acompanhar a lógica. Como os loops declarados são caros, tente usar outros métodos, se puder.
fonte
Somente While Loop é oficialmente suportado pelo SQL server. Já existe resposta para DO while loop. Estou detalhando a resposta sobre maneiras de obter diferentes tipos de loops no SQL Server.
Se você sabe, você precisa completar primeira iteração do loop de qualquer maneira, então você pode tentar do..while ou repeat..until versão do servidor SQL.
DO..WHILE Loop
Repetir..UNTIL Loop
Loop FOR
Referência
fonte