2015-07-27 1 views
1

У меня есть SQL Server 2008 R2, и я пытаюсь запустить запрос с параметром из клиентского приложения, которое будет возвращать динамические значения. Это должно быть затем работать независимо для каждого параметра ...Looping SQL Server для одного или нескольких критериев

т.е.

PARAM VALUE contains 1,2,3,4,5 

Loop for each <PARAM VALUE> 
    Select * from Table where ID = <PARAM VALUE> 
Next 

Как бы петля для каждого разделенных запятыми значения и выполнить запрос самостоятельно?

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

+0

И что ваш вопрос? –

+0

По какой-либо причине это может быть не просто однократная вставка в таблицу temp? 'SELECT * INTO #T FROM Table WHERE ID BETWEEN 1 AND 5' –

+0

Да, я делаю сложный математический расчет в запросе, который сломался бы, если бы я выбрал несколько идентификаторов одновременно. Поэтому я собираюсь запустить его для каждого прохода по ID, чтобы номера совпадали. – DataCrypt

ответ

0

Вы можете использовать переменную таблицы перебрать значения:

DECLARE @Values TABLE (Index INT) 
INSERT @Values VALUES (1, 2, 3, 4, 5) 
DECLARE @Index INT 
WHILE EXISTS (SELECT * FROM @Values) BEGIN 
    SET @Index = (SELECT TOP 1 Index FROM @Values) 
    SELECT * FROM Table WHERE ID = @Index 
    DELETE @Values WHERE Index = @Index 
END 

Если список значений является последовательность, то более типичный цикл может быть использован:

DECLARE @Index INT = 1 
WHILE @Index <= 5 BEGIN 
    SELECT * FROM Table WHERE ID = @Index 
    SET @Index = @Index + 1 
END 
+0

Awesome, Это то, что я искал. Спасибо за подтверждение. – DataCrypt

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