J'essaie de comprendre comment implémenter dans TSQLComment mettre en œuvre une boucle do-while dans tsql
do
update stuff set col = 'blah' where that_row = 'the right one'
select trash from stuff ...
until some_condition
La seule phrase de flux de contrôle itérative fourni par Transact-SQL est while (condition) sentences
qui évalue d'abord la condition et si cette condition est vraie, exécutez la phrase.
Je pense à un scénario comme exécuter une instruction UPDATE sur une table jusqu'à ce qu'une condition déclenchée par la dernière UPDATE exécutée soit atteinte.
le plus important, je suis à la recherche de l'approche moins sale à ce problème (Duplication la mise à jour avant le While ne me faites pas trop de sens que la peine de mise à jour peut être arbitrairement long et complexe)
EDIT: Le problème que j'essaie de résoudre implique plusieurs instructions UPDATE sous la même table, chacune prenant et transformant les valeurs des itérations précédentes. Ce n'est pas possible dans une seule grande instruction UPDATE, car chaque ligne ne sera évaluée et mise à jour qu'une seule fois, donc une boucle est la seule façon de résoudre ce problème.
Si vous envisagez le contrôle de flux pour le code de base de données, vous vous trompez. –
Ne soyez pas si inflexible, parfois la logique métier doit être développée dans les procédures stockées. – Rodrigo
@rodrigo, il isn, en parlant de cela étant un proc stocké, il parle d'utiliser la théorie des ensembles et pas un looop du tout. Il est possible d'éviter la boucle environ 99% du temps et il est TOUJOURS préférable de le faire si vous le pouvez. – HLGEM