2012-03-05 3 views
3

У меня есть хранимая процедура SQL, которую мне нужно выполнить несколько раз с разными параметрами. Возможно ли выполнить какой-либо SQL-скрипт, который будет выполняться несколько раз с таким же массивом или другой структурой данных разных параметров? Любые мысли по этому поводу?Выполнение SQL-запроса несколько раз с разными параметрами

+0

Где параметры берутся? Таблица БД? –

+0

yep. Отдельный столбец в таблице не меньше. – SoftwareSavant

+1

Можно пропустить значения столбца в таблице и использовать их в качестве параметров в вызове хранимой процедуры. Но это может быть медленным. Иногда лучше (если вообще возможно) переписать хранимая процедуру как непроцедурный SQL. Конечно, вы не указали свой код, поэтому невозможно сказать, что лучше в вашем случае. –

ответ

5

вы можете использовать курсор (но если это возможно, чтобы перестроить свой код, попробуйте YS's answer):

EDIT: добавлены FAST_FORWARD согласно @ YS-х внушения

DECLARE @param INT 

-- getting your parameter from the table 
DECLARE curs CURSOR LOCAL FAST_FORWARD FOR 
    SELECT afield FROM atable WHERE ... 

OPEN curs 

FETCH NEXT FROM curs INTO @param 

-- executing your stored procedure once for every value of your parameter  
WHILE @@FETCH_STATUS = 0 BEGIN 
    EXEC usp_stored_Procedure @param 
    FETCH NEXT FROM curs INTO @param 
END 

CLOSE curs 
DEALLOCATE curs 
+4

Рассмотрите возможность использования 'FAST_FORWARD' для дополнительной производительности, если курсор только для чтения, и вы только продвигаетесь вперед. т.е.: 'DECLARE curs CURSOR LOCAL FAST_FORWARD FOR ...' –

+0

@YS: вы правы. Спасибо за предложение! –

+0

Это действительно работает очень хорошо. Мне нужно работать на моем T-SQL – SoftwareSavant

5

я, наверное, реструктурировать дизайн немного подойдет (для обхода курсора) - то есть:

  • Вставить значения, которые должны быть выполнены в s tored прок в временной таблицу, а затем вызвать хранимую процедуру (хранимая процедура будет читать временную таблицу)

  • вызова ХП с помощью таблицы-значного параметр