2017-02-08 9 views
0

Я пытаюсь увеличить набор параметров в моем скрипте на 1 каждый цикл моего while.Приращение параметра типа INT в динамическом SQL

Это пример того, что я делаю в моем сценарии:

DECLARE @I AS INT; 
SET @I = 0; 

DECLARE @SQL NVARCHAR(MAX) 
SET @SQL = 
'WHILE '+ Convert(Varchar, @I) +' < (SELECT statement here...) 
BEGIN 
    SET '+ Convert(Varchar, @I) +' = '+ Convert(Varchar, (@I + 1))' 
END' 

Существует много больше к этому сценарию, но это соответствующая часть. Я понимаю, что '+ Convert(Varchar, @I) +' просто собирается связать значение @I с строкой, но может ли кто-нибудь предложить какие-либо советы в том, как я могу сделать это так, чтобы значение @I увеличивалось на 1.

В настоящее время при выполнении SQL, набор команд будет в конечном итоге, как следующее:

SET 0 = 0 + 1 

, где, как мне нужно, чтобы изменить фактическое значение переменных для следующего цикла.

Возможно ли это?

+0

Настроен ли ваше сердце на петлях? попробуйте объяснить исходную проблему и, возможно, будет лучший способ. Я всегда чувствую, что есть проблема, когда в sql появляются петли. – Snowlockk

+0

Также не конвертируйте целые числа в varchar's, вы столкнетесь с проблемами – balaji

+0

@Snowlockk Я знаю альтернативный метод, но этот скрипт будет запускаться один раз в любой «чистой» системе. Я хочу уменьшить количество раз, когда я попал на сервер в этом процессе, поэтому я создал цикл. – Chris

ответ

1

Вы можете использовать «@i» в качестве переменной в запросе:

Я пытаюсь увеличиваем параметр установлен в моем сценарии на 1 каждый цикл моего времени.

Это пример того, что я делаю в моем сценарии:

DECLARE @SQL NVARCHAR(MAX) 
    SET @SQL = ' 
    DECLARE @I AS INT; 
    SET @I = 0;  

    WHILE @I +' < (SELECT statement here...) + 
    ' 
    BEGIN 
     SET @I = @I + 1 
    END' 
+0

Должен объявить скалярную переменную «@I». – Chris

+0

обновил заявление – Sparrow

+0

* чувство неловкости * О, ничего себе ... это было действительно так просто? Спасибо! – Chris

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

  • Нет связанных вопросов^_^