Выполнение SQL-запроса несколько раз с разными параметрами - PullRequest
3 голосов
/ 06 марта 2012

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

Ответы [ 2 ]

5 голосов
/ 06 марта 2012

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

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

  • вызовите сохраненный процесс с использованием табличного параметра

5 голосов
/ 06 марта 2012

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

РЕДАКТИРОВАТЬ : добавлено 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
...