使用不同的参数多次执行SQL查询

Sof*_*ant 3 sql-server sql-scripts

我有一个SQL存储过程,我需要使用不同的参数执行几次.是否可以执行某种类型的SQL脚本,它会像数组或其他不同参数的数据结构一样多次执行?有什么想法吗?

Pao*_*lla 5

你可以使用游标(但如果可以重构代码,请尝试YS的答案):

编辑:根据@ YS的建议添加FAST_FORWARD

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
Run Code Online (Sandbox Code Playgroud)

  • 如果光标是只读的并且您只是向前移动,请考虑使用`FAST_FORWARD`来增加性能.即:'DECLARE curs CURSOR LOCAL FAST_FORWARD FOR ...` (4认同)

YS.*_*YS. 5

我可能会根据需要重新设计一下设计(解决方法) - 即:

  • 将要在存储过程中执行的值插入临时表,然后调用存储过程(存储过程将读取临时表)

  • 使用表值参数调用存储过程