Мы используем цикл WHILE
в SQL Server 2008 вместо Cursor. Теперь я хочу найти, какой метод лучше всего написать в моей процедуре WHILE
.Перерыв ключевого слова vs Переменная в петле WHILE
Метод 1 (Использование BREAK ключевое слово):
DECLARE @V_Counter INT = 1;
WHILE (1 = 1)
BEGIN
PRINT @V_Counter;
SET @V_Counter = @V_Counter + 1;
IF @V_Counter = 4
BEGIN
BREAK;
END
END
Метод 2 (Использование BOOL ПЕРЕМЕННОЙ):
DECLARE @V_Counter INT = 1, @V_CloseLoop TINYINT = 1;
WHILE (@V_CloseLoop = 1)
BEGIN
PRINT @V_Counter;
SET @V_Counter = @V_Counter + 1;
IF @V_Counter = 4
BEGIN
SET @V_CloseLoop = 0;
END
END
Мои вопросы:
- W какой метод я должен использовать, или оба они одинаковы?
- Есть ли какой-либо другой метод, который я могу использовать?
Заранее спасибо ...
* Мы используем цикл WHILE ... вместо курсора * - в 'WHILE 'все еще почти так же плохо, как курсор. Вы должны проверить, не можете ли вы использовать 'WHILE' и пойти с действительно установленным подходом. ** THAT ** действительно будет иметь заметную разницу в скорости –
@marc_s Можете ли вы предоставить мне ссылку на этот подход или любой пример. Я хочу реализовать лучший подход вместо курсора. Я обнаружил, что цикл While лучше, чем курсор. Поэтому я пытаюсь реализовать это в своей процедуре. –
Просто найдите Google (или Bing) для 'SQL Server Thinking in Sets', и у вас будет ** много ** ссылок, например. [T-SQL Foundations: Thinking in Sets] (http://sqlmag.com/t-sql/t-sql-foundations-thinking-sets) и ** много, много! ** –