3

我有一个 SQL 存储过程,需要使用不同的参数执行多次。是否可以执行某种 SQL 脚本,该脚本将使用数组或其他不同参数的数据结构多次执行?对此有什么想法吗?

4

2 回答 2

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
于 2012-03-05T20:25:57.590 回答
5

我可能会稍微调整设计以适应需要(解决光标问题) - 即:

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

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

于 2012-03-05T20:32:04.073 回答