Comment mettre en œuvre une boucle while en tsql

J'essaie de comprendre comment implémenter cela dans TSQL

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

La seule itératif de contrôle de flux de peine prévue par les instructions Transact-SQL est while (condition) sentences qui évalue d'abord la condition et si cette condition est vraie, alors exécuter la peine.

Je suis en train de penser à un tel scénario, d'exécuter une instruction de mise à JOUR sur une table jusqu'à ce qu'une condition provoquée y la dernière mise à JOUR exécutée est atteint.

Le plus important, je suis à la recherche pour le moins sale approche à ce problème (Duplication de la mise à JOUR avant que le TOUT ne fait pas trop de sens pour moi que la mise à JOUR de la phrase peut être arbitrairement longue et complexe)


MODIFIER: Le problème, je vais essayer de résoudre impliquent plusieurs mise à JOUR des déclarations en vertu de la même table, chacun prenant et en transformant les valeurs des précédentes itérations. Ce n'est pas possible de le faire en seulement une grosse mise à JOUR de déclaration, chaque ligne sera évalué et mis à jour qu'une seule fois pour une boucle est la seule façon que je peux comprendre pour faire de ce gâchis de travail.

  • Si vous envisagez de contrôle de flux pour le code de base de données, vous le faites mal.
  • Ne soyez pas si inflexible, parfois une logique d'entreprise doit être développé dans des procédures stockées.
  • il n'est, en parler étant une procédure stockée, il parle à propos de l'utilisation de la théorie des ensembles et non pas d'un looop à tous. Il est possible d'éviter la boucle de près de 99% de la teh temps et il est TOUJOURS préférable de le faire si vous le pouvez.
  • avez-vous lu la section EDIT de ma question? vous avez raison, 99% du temps a construire des requêtes résout tout, j'ai été demander, car certaines fois, vous avoir à faire à un cas que de 1%...
InformationsquelleAutor Rodrigo | 2009-10-03