2014-12-11 5 views
1

Позвольте мне начать с того, что я знаю, что знаю, что эти типы циклов ужасны, и вы не должны использовать их в Transact SQL. Но для некоторых целей (эти цели неактуальны, поэтому не спрашивайте меня «что вы пытаетесь сделать !?»), вам просто нужно. Я не хочу, но я должен.Хотя цикл с несколькими условиями в T-SQL

В любом случае. Есть ли способ, чтобы цикл while в T-SQL заканчивался на сложном условном выражении? например, в C# я бы просто сказал, что (i> -10 & & i < 10), потому что я хочу, чтобы цикл заканчивался, когда значение дозорного составляет от -10 до 10, но я просто ... не могу понять как это сделать.

Это, наверное, мучительно простой ... или .. невозможно. Пожалуйста, порекомендуйте.

Прямо сейчас, я только что получил

WHILE @N <> 0 
BEGIN 
    --code and such here 
END 
+0

Используйте 'break', как и на C++ или C#. –

+3

Попробуйте 'WHILE @N> -1 AND @N <10' –

+0

WHILE петли полностью действительны для использования, если они не используются из-за незнания установленных операций. –

ответ

3

Вы должны смотреть на декларации WHILE заявления:

WHILE Boolean_expression 
    { sql_statement | statement_block | BREAK | CONTINUE } 

Прежде всего вы можете использовать сложные Boolean_expression как сказал Дэн:

WHILE @N > -1 AND @N <10 
BEGIN 
END 

Если вы хотите добавить дополнительную гибкость в свой код, вы можете использовать IF с BREAK, s omething вот так:

WHILE @N > -1 AND @N <10 
BEGIN 

    -- code 
    IF (SELECT MAX(ListPrice) FROM Production.Product) > $500 
    BREAK 
    END 
    -- code 

END 

, чтобы выйти из цикла или использовать ПРОДОЛЖИТЬ пропустить один цикл.

+0

Я знаю. Я был смущен, потому что он не работал, и он не работал, потому что я менял его в режиме отладки. –

0

Я чувствую себя полным идиотом. И я уверен, что я тоже выгляжу.

Я пробовал все это, пытаясь заставить условие работать. Я просто не мог понять, почему он не работает.

Это просто ударило меня. Я менял код во время его отладки, и он не выполнял мои изменения.

Я довольно смущен. В конце концов, я делал это правильно. Я просто ... делал это неправильно.

Смежные вопросы